/**
 * admin_menu hook.
 */
function wpcf_admin_menu_hook()
{
    $wpcf_capability = apply_filters('wpcf_capability', WPCF_CUSTOM_POST_TYPE_VIEW);
    add_menu_page(__('Types', 'wpcf'), __('Types', 'wpcf'), $wpcf_capability, 'wpcf', 'wpcf_admin_menu_summary');
    $subpages = wpcf_admin_menu_get_subpages();
    foreach ($subpages as $menu_slug => $menu) {
        if (isset($menu['context']) && 'dashboard_only' == $menu['context']) {
            continue;
        }
        wpcf_admin_add_submenu_page($menu, $menu_slug);
    }
    if (isset($_GET['page'])) {
        $current_page = $_GET['page'];
        switch ($current_page) {
            /**
             * User Fields Control
             */
            case 'wpcf-user-fields-control':
                wpcf_admin_add_submenu_page(array('menu_title' => __('User Field Control', 'wpcf'), 'function' => 'wpcf_admin_menu_user_fields_control', 'capability_filter' => 'wpcf_ufc_view'), 'wpcf-user-fields-control');
                break;
                /**
                 *  Post Fields Control
                 */
            /**
             *  Post Fields Control
             */
            case 'wpcf-custom-fields-control':
                wpcf_admin_add_submenu_page(array('menu_title' => __('Post Field Control', 'wpcf'), 'function' => 'wpcf_admin_menu_custom_fields_control', 'capability_filter' => 'wpcf_cfc_view'), 'wpcf-custom-fields-control');
                break;
                /**
                 * Import/Export
                 */
            /**
             * Import/Export
             */
            case 'wpcf-import-export':
                wpcf_admin_add_submenu_page(array('menu_title' => __('Import/Export', 'wpcf'), 'function' => 'wpcf_admin_menu_import_export'), 'wpcf-import-export');
                break;
                /**
                 * debug
                 */
            /**
             * debug
             */
            case 'wpcf-debug-information':
                wpcf_admin_add_submenu_page(array('menu_title' => __('Debug Information', 'wpcf'), 'function' => 'wpcf_admin_menu_debug_information'), 'wpcf-debug-information');
                break;
                /**
                 * custom field grup
                 */
            /**
             * custom field grup
             */
            case 'wpcf-edit':
                $title = isset($_GET['group_id']) ? __('Edit Group', 'wpcf') : __('Add New Post Field Group', 'wpcf');
                $hook = wpcf_admin_add_submenu_page(array('menu_title' => $title, 'function' => 'wpcf_admin_menu_edit_fields', 'capability' => WPCF_CUSTOM_FIELD_VIEW), $current_page);
                add_action('load-' . $hook, 'wpcf_admin_menu_edit_fields_hook');
                wpcf_admin_plugin_help($hook, 'wpcf-edit');
                break;
            case 'wpcf-view-custom-field':
                $hook = wpcf_admin_add_submenu_page(array('menu_title' => __('View Post Field Group', 'wpcf'), 'function' => 'wpcf_admin_menu_edit_fields', 'capability' => WPCF_CUSTOM_FIELD_VIEW), $current_page);
                wpcf_admin_plugin_help($hook, 'wpcf-edit');
                break;
                /**
                 * custom post
                 */
            /**
             * custom post
             */
            case 'wpcf-edit-type':
                $title = __('Add New Post Type', 'wpcf');
                if (isset($_GET['wpcf-post-type'])) {
                    $title = __('Edit Post Type', 'wpcf');
                }
                $hook = wpcf_admin_add_submenu_page(array('menu_title' => $title, 'function' => 'wpcf_admin_menu_edit_type', 'capability' => WPCF_CUSTOM_FIELD_EDIT), $current_page);
                add_action('load-' . $hook, 'wpcf_admin_menu_edit_type_hook');
                wpcf_admin_plugin_help($hook, 'wpcf-edit-type');
                break;
            case 'wpcf-view-type':
                $hook = wpcf_admin_add_submenu_page(array('menu_title' => __('View Post Type', 'wpcf'), 'function' => 'wpcf_admin_menu_edit_type', 'capability' => WPCF_CUSTOM_FIELD_VIEW), $current_page);
                add_action('load-' . $hook, 'wpcf_admin_menu_edit_type_hook');
                wpcf_admin_plugin_help($hook, 'wpcf-edit-type');
                break;
            case 'wpcf-edit-tax':
                $title = isset($_GET['wpcf-tax']) ? __('Edit Taxonomy', 'wpcf') : __('Add New Taxonomy', 'wpcf');
                $hook = wpcf_admin_add_submenu_page(array('menu_title' => $title, 'function' => 'wpcf_admin_menu_edit_tax', 'capability' => WPCF_CUSTOM_TAXONOMY_EDIT), $current_page);
                add_action('load-' . $hook, 'wpcf_admin_menu_edit_tax_hook');
                wpcf_admin_plugin_help($hook, 'wpcf-edit-tax');
                break;
            case 'wpcf-view-tax':
                $hook = wpcf_admin_add_submenu_page(array('menu_title' => __('View Taxonomy', 'wpcf'), 'function' => 'wpcf_admin_menu_edit_tax', 'capability' => WPCF_CUSTOM_TAXONOMY_VIEW), $current_page);
                add_action('load-' . $hook, 'wpcf_admin_menu_edit_tax_hook');
                wpcf_admin_plugin_help($hook, 'wpcf-edit-tax');
                break;
                /**
                 * user meta fields
                 */
            /**
             * user meta fields
             */
            case 'wpcf-edit-usermeta':
                $title = isset($_GET['group_id']) ? __('Edit User Field Group', 'wpcf') : __('Add New User Field Group', 'wpcf');
                $hook = wpcf_admin_add_submenu_page(array('menu_title' => $title, 'function' => 'wpcf_admin_menu_edit_user_fields', 'capability' => WPCF_USER_META_FIELD_EDIT), $current_page);
                wpcf_admin_plugin_help($hook, 'wpcf-edit-usermeta');
                break;
            case 'wpcf-view-usermeta':
                $hook = wpcf_admin_add_submenu_page(array('menu_title' => __('View User Field Group', 'wpcf'), 'function' => 'wpcf_admin_menu_edit_user_fields', 'capability' => WPCF_USER_META_FIELD_VIEW), $current_page);
                wpcf_admin_plugin_help($hook, 'wpcf-edit-usermeta');
                break;
            case WPCF_Page_Edit_Termmeta::PAGE_NAME:
                // Initialize the page.
                /** @var WPCF_Page_Edit_Termmeta $termmeta_page */
                $termmeta_page = WPCF_Page_Edit_Termmeta::get_instance();
                $termmeta_page->initialize();
                break;
            case WPCF_Page_Control_Termmeta::PAGE_NAME:
                // Initialize by creating an instance.
                /** @var WPCF_Page_Control_Termmeta $term_field_control_page */
                $term_field_control_page = WPCF_Page_Control_Termmeta::get_instance();
                $term_field_control_page->initialize();
                break;
        }
    }
    // Check if migration from other plugin is needed
    if (class_exists('Acf') && !class_exists('acf_pro') || defined('CPT_VERSION')) {
        $hook = add_submenu_page('wpcf', __('Migration', 'wpcf'), __('Migration', 'wpcf'), 'manage_options', 'wpcf-migration', 'wpcf_admin_menu_migration');
        add_action('load-' . $hook, 'wpcf_admin_menu_migration_hook');
        wpcf_admin_plugin_help($hook, 'wpcf-migration');
    }
    do_action('wpcf_menu_plus');
    // remove the repeating Types submenu
    remove_submenu_page('wpcf', 'wpcf');
}
Пример #2
0
/**
 * Add legacy menu pages. 
 * 
 * This is indirectly hooked to toolset_filter_register_menu_pages through the Types_Admin_Menu controller.
 * 
 * @param $pages
 * @return mixed
 * @since 2.0
 */
function wpcf_admin_toolset_register_menu_pages($pages)
{
    if (!apply_filters('types_register_pages', true)) {
        return $pages;
    }
    require_once WPCF_ABSPATH . '/help.php';
    $current_page = '';
    if (isset($_GET['page'])) {
        $current_page = $_GET['page'];
    }
    $pages['wpcf-cpt'] = array('slug' => 'wpcf-cpt', 'menu_title' => __('Post Types', 'wpcf'), 'page_title' => __('Post Types', 'wpcf'), 'callback' => 'wpcf_admin_menu_summary_cpt', 'capability_filter' => 'wpcf_cpt_view', 'capability' => WPCF_CUSTOM_POST_TYPE_VIEW);
    $pages['wpcf-cpt']['capability'] = wpcf_admin_calculate_menu_page_capability($pages['wpcf-cpt']);
    $pages['wpcf-cpt']['load_hook'] = wpcf_admin_calculate_menu_page_load_hook($pages['wpcf-cpt']);
    $pages['wpcf-cpt']['contextual_help_legacy'] = wpcf_admin_help('wpcf-cpt');
    $pages['wpcf-cpt']['contextual_help_hook'] = 'wpcf_admin_help_add_tabs_load_hook';
    if ($current_page == 'wpcf-edit-type') {
        $pages['wpcf-edit-type'] = array('slug' => 'wpcf-edit-type', 'menu_title' => isset($_GET['wpcf-post-type']) ? __('Edit Post Type', 'wpcf') : __('Add New Post Type', 'wpcf'), 'page_title' => isset($_GET['wpcf-post-type']) ? __('Edit Post Type', 'wpcf') : __('Add New Post Type', 'wpcf'), 'callback' => 'wpcf_admin_menu_edit_type', 'capability' => WPCF_CUSTOM_FIELD_EDIT, 'load_hook' => 'wpcf_admin_menu_edit_type_hook');
        $pages['wpcf-edit-type']['capability'] = wpcf_admin_calculate_menu_page_capability($pages['wpcf-edit-type']);
        $pages['wpcf-edit-type']['load_hook'] = wpcf_admin_calculate_menu_page_load_hook($pages['wpcf-edit-type']);
        $pages['wpcf-edit-type']['contextual_help_legacy'] = wpcf_admin_help('wpcf-edit-type');
        $pages['wpcf-edit-type']['contextual_help_hook'] = 'wpcf_admin_help_add_tabs_load_hook';
    }
    if ($current_page == 'wpcf-view-type') {
        $pages['wpcf-view-type'] = array('slug' => 'wpcf-view-type', 'menu_title' => __('View Post Type', 'wpcf'), 'page_title' => __('View Post Type', 'wpcf'), 'callback' => 'wpcf_admin_menu_edit_type', 'capability' => WPCF_CUSTOM_FIELD_VIEW, 'load_hook' => 'wpcf_admin_menu_edit_type_hook');
        $pages['wpcf-view-type']['capability'] = wpcf_admin_calculate_menu_page_capability($pages['wpcf-view-type']);
        $pages['wpcf-view-type']['load_hook'] = wpcf_admin_calculate_menu_page_load_hook($pages['wpcf-view-type']);
        $pages['wpcf-view-type']['contextual_help_legacy'] = wpcf_admin_help('wpcf-view-type');
        $pages['wpcf-view-type']['contextual_help_hook'] = 'wpcf_admin_help_add_tabs_load_hook';
    }
    $pages['wpcf-ctt'] = array('slug' => 'wpcf-ctt', 'menu_title' => __('Taxonomies', 'wpcf'), 'page_title' => __('Taxonomies', 'wpcf'), 'callback' => 'wpcf_admin_menu_summary_ctt', 'capability_filter' => 'wpcf_ctt_view', 'capability' => WPCF_CUSTOM_TAXONOMY_VIEW);
    $pages['wpcf-ctt']['capability'] = wpcf_admin_calculate_menu_page_capability($pages['wpcf-ctt']);
    $pages['wpcf-ctt']['load_hook'] = wpcf_admin_calculate_menu_page_load_hook($pages['wpcf-ctt']);
    $pages['wpcf-ctt']['contextual_help_legacy'] = wpcf_admin_help('wpcf-ctt');
    $pages['wpcf-ctt']['contextual_help_hook'] = 'wpcf_admin_help_add_tabs_load_hook';
    if ($current_page == 'wpcf-edit-tax') {
        $pages['wpcf-edit-tax'] = array('slug' => 'wpcf-edit-tax', 'menu_title' => isset($_GET['wpcf-tax']) ? __('Edit Taxonomy', 'wpcf') : __('Add New Taxonomy', 'wpcf'), 'page_title' => isset($_GET['wpcf-tax']) ? __('Edit Taxonomy', 'wpcf') : __('Add New Taxonomy', 'wpcf'), 'callback' => 'wpcf_admin_menu_edit_tax', 'capability' => WPCF_CUSTOM_TAXONOMY_EDIT, 'load_hook' => 'wpcf_admin_menu_edit_tax_hook');
        $pages['wpcf-edit-tax']['capability'] = wpcf_admin_calculate_menu_page_capability($pages['wpcf-edit-tax']);
        $pages['wpcf-edit-tax']['load_hook'] = wpcf_admin_calculate_menu_page_load_hook($pages['wpcf-edit-tax']);
        $pages['wpcf-edit-tax']['contextual_help_legacy'] = wpcf_admin_help('wpcf-edit-tax');
        $pages['wpcf-edit-tax']['contextual_help_hook'] = 'wpcf_admin_help_add_tabs_load_hook';
    }
    if ($current_page == 'wpcf-view-tax') {
        $pages['wpcf-view-tax'] = array('slug' => 'wpcf-view-tax', 'menu_title' => __('View Taxonomy', 'wpcf'), 'page_title' => __('View Taxonomy', 'wpcf'), 'callback' => 'wpcf_admin_menu_edit_tax', 'capability' => WPCF_CUSTOM_TAXONOMY_VIEW, 'load_hook' => 'wpcf_admin_menu_edit_tax_hook');
        $pages['wpcf-view-tax']['capability'] = wpcf_admin_calculate_menu_page_capability($pages['wpcf-view-tax']);
        $pages['wpcf-view-tax']['load_hook'] = wpcf_admin_calculate_menu_page_load_hook($pages['wpcf-view-tax']);
        $pages['wpcf-view-tax']['contextual_help_legacy'] = wpcf_admin_help('wpcf-view-tax');
        $pages['wpcf-view-tax']['contextual_help_hook'] = 'wpcf_admin_help_add_tabs_load_hook';
    }
    $pages['wpcf-cf'] = array('slug' => 'wpcf-cf', 'menu_title' => __('Post Fields', 'wpcf'), 'page_title' => __('Post Fields', 'wpcf'), 'callback' => 'wpcf_admin_menu_summary', 'capability_filter' => 'wpcf_cf_view', 'capability' => WPCF_CUSTOM_FIELD_VIEW);
    $pages['wpcf-cf']['capability'] = wpcf_admin_calculate_menu_page_capability($pages['wpcf-cf']);
    $pages['wpcf-cf']['load_hook'] = wpcf_admin_calculate_menu_page_load_hook($pages['wpcf-cf']);
    $pages['wpcf-cf']['contextual_help_legacy'] = wpcf_admin_help('wpcf-cf');
    $pages['wpcf-cf']['contextual_help_hook'] = 'wpcf_admin_help_add_tabs_load_hook';
    if ($current_page == 'wpcf-edit') {
        $pages['wpcf-edit'] = array('slug' => 'wpcf-edit', 'menu_title' => isset($_GET['group_id']) ? __('Edit Group', 'wpcf') : __('Add New Post Field Group', 'wpcf'), 'page_title' => isset($_GET['group_id']) ? __('Edit Group', 'wpcf') : __('Add New Post Field Group', 'wpcf'), 'callback' => 'wpcf_admin_menu_edit_fields', 'capability' => WPCF_CUSTOM_FIELD_VIEW, 'load_hook' => 'wpcf_admin_menu_edit_fields_hook');
        $pages['wpcf-edit']['capability'] = wpcf_admin_calculate_menu_page_capability($pages['wpcf-edit']);
        $pages['wpcf-edit']['load_hook'] = wpcf_admin_calculate_menu_page_load_hook($pages['wpcf-edit']);
        $pages['wpcf-edit']['contextual_help_legacy'] = wpcf_admin_help('wpcf-edit');
        $pages['wpcf-edit']['contextual_help_hook'] = 'wpcf_admin_help_add_tabs_load_hook';
    }
    if ($current_page == 'wpcf-view-custom-field') {
        $pages['wpcf-view-custom-field'] = array('slug' => 'wpcf-view-custom-field', 'menu_title' => __('View Post Field Group', 'wpcf'), 'page_title' => __('View Post Field Group', 'wpcf'), 'callback' => 'wpcf_admin_menu_edit_fields', 'capability' => WPCF_CUSTOM_FIELD_VIEW);
        $pages['wpcf-view-custom-field']['capability'] = wpcf_admin_calculate_menu_page_capability($pages['wpcf-view-custom-field']);
        $pages['wpcf-view-custom-field']['load_hook'] = wpcf_admin_calculate_menu_page_load_hook($pages['wpcf-view-custom-field']);
        $pages['wpcf-view-custom-field']['contextual_help_legacy'] = wpcf_admin_help('wpcf-view-custom-field');
        $pages['wpcf-view-custom-field']['contextual_help_hook'] = 'wpcf_admin_help_add_tabs_load_hook';
    }
    $WPCF_Page_Listing_Termmeta = WPCF_Page_Listing_Termmeta::get_instance();
    $pages[WPCF_Page_Listing_Termmeta::PAGE_NAME] = $WPCF_Page_Listing_Termmeta->add_submenu_page();
    if ($current_page == WPCF_Page_Edit_Termmeta::PAGE_NAME) {
        $WPCF_Page_Edit_Termmeta = WPCF_Page_Edit_Termmeta::get_instance();
        $pages[WPCF_Page_Edit_Termmeta::PAGE_NAME] = $WPCF_Page_Edit_Termmeta->add_submenu_page();
    }
    $pages['wpcf-um'] = array('slug' => 'wpcf-um', 'menu_title' => __('User Fields', 'wpcf'), 'page_title' => __('User Fields', 'wpcf'), 'callback' => 'wpcf_usermeta_summary', 'capability_filter' => 'wpcf_uf_view', 'capability' => WPCF_USER_META_FIELD_VIEW);
    $pages['wpcf-um']['capability'] = wpcf_admin_calculate_menu_page_capability($pages['wpcf-um']);
    $pages['wpcf-um']['load_hook'] = wpcf_admin_calculate_menu_page_load_hook($pages['wpcf-um']);
    $pages['wpcf-um']['contextual_help_legacy'] = wpcf_admin_help('wpcf-um');
    $pages['wpcf-um']['contextual_help_hook'] = 'wpcf_admin_help_add_tabs_load_hook';
    if ($current_page == 'wpcf-edit-usermeta') {
        $pages['wpcf-edit-usermeta'] = array('slug' => 'wpcf-edit-usermeta', 'menu_title' => isset($_GET['group_id']) ? __('Edit User Field Group', 'wpcf') : __('Add New User Field Group', 'wpcf'), 'page_title' => isset($_GET['group_id']) ? __('Edit User Field Group', 'wpcf') : __('Add New User Field Group', 'wpcf'), 'callback' => 'wpcf_admin_menu_edit_user_fields', 'capability' => WPCF_USER_META_FIELD_EDIT);
        $pages['wpcf-edit-usermeta']['capability'] = wpcf_admin_calculate_menu_page_capability($pages['wpcf-edit-usermeta']);
        $pages['wpcf-edit-usermeta']['load_hook'] = wpcf_admin_calculate_menu_page_load_hook($pages['wpcf-edit-usermeta']);
        $pages['wpcf-edit-usermeta']['contextual_help_legacy'] = wpcf_admin_help('wpcf-edit-usermeta');
        $pages['wpcf-edit-usermeta']['contextual_help_hook'] = 'wpcf_admin_help_add_tabs_load_hook';
    }
    if ($current_page == 'wpcf-view-usermeta') {
        $pages['wpcf-view-usermeta'] = array('slug' => 'wpcf-view-usermeta', 'menu_title' => __('View User Field Group', 'wpcf'), 'page_title' => __('View User Field Group', 'wpcf'), 'callback' => 'wpcf_admin_menu_edit_user_fields', 'capability' => WPCF_USER_META_FIELD_VIEW);
        $pages['wpcf-view-usermeta']['capability'] = wpcf_admin_calculate_menu_page_capability($pages['wpcf-view-usermeta']);
        $pages['wpcf-view-usermeta']['load_hook'] = wpcf_admin_calculate_menu_page_load_hook($pages['wpcf-view-usermeta']);
        $pages['wpcf-view-usermeta']['contextual_help_legacy'] = wpcf_admin_help('wpcf-view-usermeta');
        $pages['wpcf-view-usermeta']['contextual_help_hook'] = 'wpcf_admin_help_add_tabs_load_hook';
    }
    if (class_exists('Acf') && !class_exists('acf_pro') || defined('CPT_VERSION')) {
        $pages['wpcf-migration'] = array('slug' => 'wpcf-migration', 'menu_title' => __('Types Migration', 'wpcf'), 'page_title' => __('Types Migration', 'wpcf'), 'callback' => 'wpcf_admin_menu_migration', 'capability' => 'manage_options');
        $pages['wpcf-migration']['capability'] = wpcf_admin_calculate_menu_page_capability($pages['wpcf-migration']);
        $pages['wpcf-migration']['load_hook'] = wpcf_admin_calculate_menu_page_load_hook($pages['wpcf-migration']);
        $pages['wpcf-migration']['contextual_help_legacy'] = wpcf_admin_help('wpcf-migration');
        $pages['wpcf-migration']['contextual_help_hook'] = 'wpcf_admin_help_add_tabs_load_hook';
    }
    if ('installer' == $current_page) {
        // @todo Having a page with a slug "installer" is a direct path to a third-party plugin conflict. Just saying. Not to mention the callback funciton "installer_content", for god's sake
        $pages['installer'] = array('slug' => 'installer', 'menu_title' => __('Installer', 'wpcf'), 'page_title' => __('Installer', 'wpcf'), 'callback' => 'installer_content');
    }
    /**
     * This used to load the Toolset Access teaser - code has not been removed
     *
     * This also usd to hook the Installer page, added above
     *
     * @todo this is to be deletd IMHO
     */
    //do_action( 'wpcf_menu_plus' );
    return $pages;
}