welcome-screen.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. if ( ! defined( 'ABSPATH' ) ) {
  3. die( '-1' );
  4. }
  5. /**
  6. * Get welcome pages main slug.
  7. *
  8. * @return mixed|string
  9. * @since 4.5
  10. */
  11. function vc_page_welcome_slug() {
  12. $vc_page_welcome_tabs = vc_get_page_welcome_tabs();
  13. return isset( $vc_page_welcome_tabs ) ? key( $vc_page_welcome_tabs ) : '';
  14. }
  15. /**
  16. * Build vc-welcome page block which will be shown after Vc installation.
  17. *
  18. * vc_filter: vc_page_welcome_render_capabilities
  19. *
  20. * @since 4.5
  21. */
  22. function vc_page_welcome_render() {
  23. $vc_page_welcome_tabs = vc_get_page_welcome_tabs();
  24. $slug = vc_page_welcome_slug();
  25. $tab_slug = vc_get_param( 'tab', $slug );
  26. // If tab slug in the list please render;
  27. if ( ! empty( $tab_slug ) && isset( $vc_page_welcome_tabs[ $tab_slug ] ) ) {
  28. $pages_group = vc_pages_group_build( $slug, $vc_page_welcome_tabs[ $tab_slug ], $tab_slug );
  29. $pages_group->render();
  30. }
  31. }
  32. function vc_page_welcome_add_sub_page() {
  33. // Add submenu page
  34. $page = add_submenu_page( VC_PAGE_MAIN_SLUG, esc_html__( 'About', 'js_composer' ), esc_html__( 'About', 'js_composer' ), 'edit_posts', vc_page_welcome_slug(), 'vc_page_welcome_render' );
  35. // Css for perfect styling.
  36. add_action( 'admin_print_styles-' . $page, 'vc_page_css_enqueue' );
  37. }
  38. function vc_welcome_menu_hooks() {
  39. $settings_tab_enabled = vc_user_access()->wpAny( 'manage_options' )->part( 'settings' )->can( 'vc-general-tab' )->get();
  40. add_action( 'vc_menu_page_build', 'vc_page_welcome_add_sub_page', $settings_tab_enabled ? 11 : 1 );
  41. }
  42. function vc_welcome_menu_hooks_network() {
  43. if ( ! vc_is_network_plugin() ) {
  44. return;
  45. }
  46. $settings_tab_enabled = vc_user_access()->wpAny( 'manage_options' )->part( 'settings' )->can( 'vc-general-tab' )->get();
  47. add_action( 'vc_network_menu_page_build', 'vc_page_welcome_add_sub_page', $settings_tab_enabled && ! is_main_site() ? 11 : 1 );
  48. }
  49. add_action( 'admin_menu', 'vc_welcome_menu_hooks', 9 );
  50. add_action( 'network_admin_menu', 'vc_welcome_menu_hooks_network', 9 );
  51. /**
  52. * ====================
  53. * Redirect to welcome page on plugin activation.
  54. * ====================
  55. */
  56. /**
  57. * Set redirect transition on update or activation
  58. * @since 4.5
  59. */
  60. function vc_page_welcome_set_redirect() {
  61. if ( ! is_network_admin() && ! vc_get_param( 'activate-multi' ) ) {
  62. set_transient( '_vc_page_welcome_redirect', 1, 30 );
  63. }
  64. }
  65. /**
  66. * Do redirect if required on welcome page
  67. * @since 4.5
  68. */
  69. function vc_page_welcome_redirect() {
  70. $redirect = get_transient( '_vc_page_welcome_redirect' );
  71. delete_transient( '_vc_page_welcome_redirect' );
  72. if ( $redirect ) {
  73. wp_safe_redirect( admin_url( 'admin.php?page=' . rawurlencode( vc_page_welcome_slug() ) ) );
  74. }
  75. }
  76. // Enables redirect on activation.
  77. add_action( 'vc_activation_hook', 'vc_page_welcome_set_redirect' );
  78. add_action( 'admin_init', 'vc_page_welcome_redirect' );
  79. /**
  80. * @return mixed|void
  81. */
  82. function vc_get_page_welcome_tabs() {
  83. global $vc_page_welcome_tabs;
  84. $vc_page_welcome_tabs = apply_filters( 'vc_page-welcome-slugs-list', array(
  85. 'vc-welcome' => esc_html__( 'What\'s New', 'js_composer' ),
  86. 'vc-faq' => esc_html__( 'FAQ', 'js_composer' ),
  87. 'vc-resources' => esc_html__( 'Resources', 'js_composer' ),
  88. ) );
  89. return $vc_page_welcome_tabs;
  90. }