Пример #1
0
/**
 * admin_menu hook.
 */
function wpcf_admin_menu_hook()
{
    add_menu_page('Types', 'Types', 'manage_options', 'wpcf', 'wpcf_admin_menu_summary', WPCF_RES_RELPATH . '/images/logo-16.png');
    // Custom fields
    $hook = add_submenu_page('wpcf', __('Custom Fields', 'wpcf'), __('Custom Fields', 'wpcf'), 'manage_options', 'wpcf-cf', 'wpcf_admin_menu_summary');
    wpcf_admin_plugin_help($hook, 'wpcf-cf');
    add_action('load-' . $hook, 'wpcf_admin_menu_summary_hook');
    // Custom types and tax
    $hook = add_submenu_page('wpcf', __('Custom Types and Taxonomies', 'wpcf'), __('Custom Types and Taxonomies', 'wpcf'), 'manage_options', 'wpcf-ctt', 'wpcf_admin_menu_summary_ctt');
    add_action('load-' . $hook, 'wpcf_admin_menu_summary_ctt_hook');
    wpcf_admin_plugin_help($hook, 'wpcf-ctt');
    // Import/Export
    $hook = add_submenu_page('wpcf', __('Import/Export', 'wpcf'), __('Import/Export', 'wpcf'), 'manage_options', 'wpcf-import-export', 'wpcf_admin_menu_import_export');
    add_action('load-' . $hook, 'wpcf_admin_menu_import_export_hook');
    wpcf_admin_plugin_help($hook, 'wpcf-import-export');
    // Custom Fields Control
    $hook = add_submenu_page('wpcf', __('Custom Fields Control', 'wpcf'), __('Custom Fields Control', 'wpcf'), 'manage_options', 'wpcf-custom-fields-control', 'wpcf_admin_menu_custom_fields_control');
    add_action('load-' . $hook, 'wpcf_admin_menu_custom_fields_control_hook');
    wpcf_admin_plugin_help($hook, 'wpcf-custom-fields-control');
    // Settings
    $hook = add_submenu_page('wpcf', __('Settings', 'wpcf'), __('Settings', 'wpcf'), 'manage_options', 'wpcf-custom-settings', 'wpcf_admin_menu_settings');
    add_action('load-' . $hook, 'wpcf_admin_menu_settings_hook');
    if (isset($_GET['page'])) {
        switch ($_GET['page']) {
            case 'wpcf-edit':
                $title = isset($_GET['group_id']) ? __('Edit Group', 'wpcf') : __('Add New Group', 'wpcf');
                $hook = add_submenu_page('wpcf', $title, $title, 'manage_options', 'wpcf-edit', 'wpcf_admin_menu_edit_fields');
                add_action('load-' . $hook, 'wpcf_admin_menu_edit_fields_hook');
                wpcf_admin_plugin_help($hook, 'wpcf-edit');
                break;
            case 'wpcf-edit-type':
                $title = isset($_GET['wpcf-post-type']) ? __('Edit Custom Post Type', 'wpcf') : __('Add New Custom Post Type', 'wpcf');
                $hook = add_submenu_page('wpcf', $title, $title, 'manage_options', 'wpcf-edit-type', 'wpcf_admin_menu_edit_type');
                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 = add_submenu_page('wpcf', $title, $title, 'manage_options', 'wpcf-edit-tax', 'wpcf_admin_menu_edit_tax');
                add_action('load-' . $hook, 'wpcf_admin_menu_edit_tax_hook');
                wpcf_admin_plugin_help($hook, 'wpcf-edit-tax');
                break;
        }
    }
    // Check if migration from other plugin is needed
    if (class_exists('Acf') || 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');
    // Introduction
    $hook = add_submenu_page('wpcf', __('Help', 'wpcf'), __('Help', 'wpcf'), 'manage_options', 'wpcf-help', 'wpcf_admin_menu_introduction');
    wpcf_admin_plugin_help($hook, 'wpcf');
    add_action('load-' . $hook, 'wpcf_admin_menu_introduction_hook');
    // remove the repeating Types submenu
    remove_submenu_page('wpcf', 'wpcf');
}
Пример #2
0
 /**
  * Call this only if you are actually showing the page.
  */
 public function initialize()
 {
     $hook = wpcf_admin_add_submenu_page(array('menu_title' => $this->get_menu_title(), 'function' => array($this, 'page_handler'), 'capability' => WPCF_TERM_FIELD_EDIT), wpcf_getget('page'));
     $load_page_action = 'load-' . $hook;
     // Prepare form, which includes saving data and optionally redirecting to the edit page with group ID
     // as GET parameter. That's why it must be executed earlier than as a menu page callback.
     add_action($load_page_action, array($this, 'prepare_form_maybe_redirect'));
     // This one handles enqueuing script and styles. Originally it is meant for post fields and it also probably
     // does some things that are not needed now.
     add_action($load_page_action, 'wpcf_admin_enqueue_group_edit_page_assets');
     wpcf_admin_plugin_help($hook, self::PAGE_NAME);
 }
function wpcf_admin_add_submenu_page($menu, $menu_slug = null, $menu_parent = 'wpcf')
{
    if (!is_admin()) {
        return;
    }
    $menu_slug = array_key_exists('menu_slug', $menu) ? $menu['menu_slug'] : $menu_slug;
    $capability = array_key_exists('capability', $menu) ? $menu['capability'] : 'manage_options';
    $wpcf_capability = apply_filters('wpcf_capability', $capability, $menu, $menu_slug);
    $wpcf_capability = apply_filters('wpcf_capability' . $menu_slug, $capability, $menu, $menu_slug);
    /**
     * allow change capability  by filter
     * full list https://goo.gl/OJYTvl
     */
    if (isset($menu['capability_filter'])) {
        $wpcf_capability = apply_filters($menu['capability_filter'], $wpcf_capability, $menu, $menu_slug);
    }
    /**
     * add submenu
     */
    $hook = add_submenu_page($menu_parent, isset($menu['page_title']) ? $menu['page_title'] : $menu['menu_title'], $menu['menu_title'], $wpcf_capability, $menu_slug, array_key_exists('function', $menu) ? $menu['function'] : null);
    // For given menu slug, publish the final hook name in case we need it somewhere.
    do_action("wpcf_admin_add_submenu_page_{$menu_slug}", $hook);
    if (!empty($menu_slug)) {
        wpcf_admin_plugin_help($hook, $menu_slug);
    }
    /**
     * add action
     */
    if (!array_key_exists('load_hook', $menu) && array_key_exists('function', $menu) && is_string($menu['function'])) {
        $menu['load_hook'] = sprintf('%s_hook', $menu['function']);
    }
    if (!empty($menu['load_hook']) && function_exists($menu['load_hook'])) {
        $action = sprintf('load-%s', array_key_exists('hook', $menu) ? $menu['hook'] : $hook);
        add_action($action, $menu['load_hook']);
    }
    /**
     * add submenu to submenu
     */
    if (array_key_exists('submenu', $menu)) {
        foreach ($menu['submenu'] as $submenu_slug => $submenu) {
            wpcf_admin_add_submenu_page($submenu, $submenu_slug, $hook);
        }
    }
    return $hook;
}
Пример #4
0
/**
 * Menu hook. 
 */
function wpcf_access_admin_menu_hook()
{
    $hook = add_submenu_page('wpcf', __('Access Control and User Roles', 'wpcf'), __('Access Control and User Roles', 'wpcf'), 'manage_options', 'wpcf-access', 'wpcf_access_admin_menu_page');
    wpcf_admin_plugin_help($hook, 'wpcf-access');
    add_action('load-' . $hook, 'wpcf_access_admin_menu_load');
}
Пример #5
0
/**
 * admin_menu hook.
 */
function wpcf_admin_menu_hook()
{
    $wpcf_capability = apply_filters('wpcf_capability', 'manage_options');
    add_menu_page(__('Types', 'wpcf'), __('Types', 'wpcf'), $wpcf_capability, 'wpcf', 'wpcf_admin_menu_summary', 'none');
    $subpages = array('wpcf-ctt' => array('page_title' => __('Custom Types and Taxonomies', 'wpcf'), 'menu_title' => __('Types & Taxonomies', 'wpcf'), 'function' => 'wpcf_admin_menu_summary_ctt'), 'wpcf-cf' => array('page_title' => __('Custom Fields', 'wpcf'), 'menu_title' => __('Custom Fields', 'wpcf'), 'function' => 'wpcf_admin_menu_summary'), 'wpcf-custom-fields-control' => array('page_title' => __('Custom Fields Control', 'wpcf'), 'menu_title' => __('Custom Fields Control', 'wpcf'), 'function' => 'wpcf_admin_menu_custom_fields_control'), 'wpcf-um' => array('page_title' => __('User Fields', 'wpcf'), 'menu_title' => __('User Fields', 'wpcf'), 'function' => 'wpcf_usermeta_summary', 'load-hook' => 'wpcf_admin_menu_summary_hook'), 'wpcf-user-fields-control' => array('page_title' => __('User Fields Control', 'wpcf'), 'menu_title' => __('User Fields Control', 'wpcf'), 'function' => 'wpcf_admin_menu_user_fields_control'), 'wpcf-import-export' => array('page_title' => __('Import/Export', 'wpcf'), 'menu_title' => __('Import/Export', 'wpcf'), 'function' => 'wpcf_admin_menu_import_export'), 'wpcf-custom-settings' => array('page_title' => __('Settings', 'wpcf'), 'menu_title' => __('Settings', 'wpcf'), 'function' => 'wpcf_admin_menu_settings'), 'wpcf-help' => array('page_title' => __('Help', 'wpcf'), 'menu_title' => __('Help', 'wpcf'), 'function' => 'wpcf_admin_menu_introduction', 'submenu' => array('wpcf-debug-information' => array('page_title' => __('Debug information', 'wpcf'), 'menu_title' => __('Debug information', 'wpcf'), 'function' => 'wpcf_admin_menu_debug_information'))));
    foreach ($subpages as $menu_slug => $data) {
        $hook = add_submenu_page('wpcf', $data['page_title'], $data['menu_title'], $wpcf_capability, $menu_slug, $data['function']);
        if (array_key_exists('submenu', $data)) {
            foreach ($data['submenu'] as $submenu_slug => $submenu) {
                add_submenu_page($hook, $submenu['page_title'], $submenu['menu_title'], $wpcf_capability, $submenu_slug, $submenu['function']);
            }
        }
        if (!array_key_exists('load-hook', $data)) {
            $data['load-hook'] = sprintf('%s_hook', $data['function']);
        }
        wpcf_admin_plugin_help($hook, $menu_slug);
        add_action('load-' . $hook, $data['load-hook']);
    }
    if (isset($_GET['page'])) {
        switch ($_GET['page']) {
            case 'wpcf-edit':
                $title = isset($_GET['group_id']) ? __('Edit Group', 'wpcf') : __('Add New Group', 'wpcf');
                $hook = add_submenu_page('wpcf', $title, $title, 'manage_options', 'wpcf-edit', 'wpcf_admin_menu_edit_fields');
                add_action('load-' . $hook, 'wpcf_admin_menu_edit_fields_hook');
                wpcf_admin_plugin_help($hook, 'wpcf-edit');
                break;
            case 'wpcf-edit-type':
                $title = isset($_GET['wpcf-post-type']) ? __('Edit Custom Post Type', 'wpcf') : __('Add New Custom Post Type', 'wpcf');
                $hook = add_submenu_page('wpcf', $title, $title, 'manage_options', 'wpcf-edit-type', 'wpcf_admin_menu_edit_type');
                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 = add_submenu_page('wpcf', $title, $title, 'manage_options', 'wpcf-edit-tax', 'wpcf_admin_menu_edit_tax');
                add_action('load-' . $hook, 'wpcf_admin_menu_edit_tax_hook');
                wpcf_admin_plugin_help($hook, 'wpcf-edit-tax');
                break;
            case 'wpcf-edit-usermeta':
                $title = isset($_GET['group_id']) ? __('Edit User Fields Group', 'wpcf') : __('Add New User Fields Group', 'wpcf');
                $hook = add_submenu_page('wpcf', $title, $title, 'manage_options', 'wpcf-edit-usermeta', 'wpcf_admin_menu_edit_user_fields');
                add_action('load-' . $hook, 'wpcf_admin_menu_edit_user_fields_hook');
                wpcf_admin_plugin_help($hook, 'wpcf-edit-usermeta');
                break;
        }
    }
    // Check if migration from other plugin is needed
    if (class_exists('Acf') || 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');
}
Пример #6
0
function wpcf_admin_add_submenu_page($menu, $menu_slug = null, $menu_parent = 'wpcf')
{
    if (!is_admin()) {
        return;
    }
    $wpcf_capability = apply_filters('wpcf_capability', 'manage_options');
    $menu_slug = array_key_exists('menu_slug', $menu) ? $menu['menu_slug'] : $menu_slug;
    /**
     * add submenu
     */
    $hook = add_submenu_page($menu_parent, isset($menu['page_title']) ? $menu['page_title'] : $menu['menu_title'], $menu['menu_title'], $wpcf_capability, $menu_slug, array_key_exists('function', $menu) ? $menu['function'] : null);
    if (!empty($menu_slug)) {
        wpcf_admin_plugin_help($hook, $menu_slug);
    }
    /**
     * add action
     */
    if (!array_key_exists('load_hook', $menu) && array_key_exists('function', $menu)) {
        $menu['load_hook'] = sprintf('%s_hook', $menu['function']);
    }
    if (!empty($menu['load_hook']) && function_exists($menu['load_hook'])) {
        $action = sprintf('load-%s', array_key_exists('hook', $menu) ? $menu['hook'] : $hook);
        add_action($action, $menu['load_hook']);
    }
    /**
     * add submenu to submenu
     */
    if (array_key_exists('submenu', $menu)) {
        foreach ($menu['submenu'] as $submenu_slug => $submenu) {
            wpcf_admin_add_submenu_page($submenu, $submenu_slug, $hook);
        }
    }
    return $hook;
}