settings-tabs.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. if ( ! defined( 'ABSPATH' ) ) {
  3. die( '-1' );
  4. }
  5. function vc_page_settings_render() {
  6. $page = vc_get_param( 'page' );
  7. do_action( 'vc_page_settings_render-' . $page );
  8. vc_settings()->renderTab( $page );
  9. }
  10. function vc_page_settings_build() {
  11. if ( ! vc_user_access()->wpAny( 'manage_options' )->get() ) {
  12. return;
  13. }
  14. $tabs = vc_settings()->getTabs();
  15. foreach ( $tabs as $slug => $title ) {
  16. $has_access = vc_user_access()->part( 'settings' )->can( $slug . '-tab' )->get();
  17. if ( $has_access ) {
  18. $page = add_submenu_page( VC_PAGE_MAIN_SLUG, $title, $title, 'manage_options', $slug, 'vc_page_settings_render' );
  19. add_action( 'load-' . $page, array(
  20. vc_settings(),
  21. 'adminLoad',
  22. ) );
  23. }
  24. }
  25. do_action( 'vc_page_settings_build' );
  26. }
  27. function vc_page_settings_admin_init() {
  28. vc_settings()->initAdmin();
  29. }
  30. add_action( 'vc_menu_page_build', 'vc_page_settings_build' );
  31. add_action( 'vc_network_menu_page_build', 'vc_page_settings_build' );
  32. add_action( 'admin_init', 'vc_page_settings_admin_init' );
  33. add_action( 'vc-settings-render-tab-vc-roles', 'vc_settings_enqueue_js' );
  34. function vc_settings_enqueue_js() {
  35. // enqueue accordion in vc-roles page only
  36. wp_enqueue_script( 'vc_accordion_script' );
  37. }