突出显示管理子菜单页面

时间:2014-06-27 作者:sccr410

以下是我的插件当前的菜单/子菜单结构:

add_menu_page(\'Sunshine\', \'Sunshine\', \'sunshine_manage_options\', \'sunshine_admin\', \'sunshine_dashboard_display\', plugins_url( \'assets/images/sunshine-icon.png\' , $plugin_dir_path ));
add_submenu_page(\'sunshine_admin\', __(\'Dashboard\',\'sunshine\'), __(\'Dashboard\',\'sunshine\'), \'sunshine_manage_options\',  \'sunshine_admin\', \'sunshine_dashboard_display\');
add_submenu_page(\'sunshine_admin\', __(\'Settings\',\'sunshine\'),  __(\'Settings\',\'sunshine\'), \'sunshine_manage_options\', \'admin.php?page=sunshine\');

$sunshine_admin_submenu = array();
$sunshine_admin_submenu[10] = array(__(\'Galleries\',\'sunshine\'), __(\'Galleries\',\'sunshine\'), \'sunshine_manage_options\', \'edit.php?post_type=sunshine-gallery\');
$sunshine_admin_submenu[20] = array(__(\'Product Categories\',\'sunshine\'), __(\'Product Categories\',\'sunshine\'), \'sunshine_manage_options\', \'edit-tags.php?taxonomy=sunshine-product-category&post_type=sunshine-product\');
$sunshine_admin_submenu[30] = array(__(\'Products\',\'sunshine\'), __(\'Products\',\'sunshine\'), \'sunshine_manage_options\', \'edit.php?post_type=sunshine-product\');
$sunshine_admin_submenu[40] = array(__(\'Orders\',\'sunshine\'), __(\'Orders\',\'sunshine\'), \'sunshine_manage_options\', \'edit.php?post_type=sunshine-order\');
$sunshine_admin_submenu = apply_filters(\'sunshine_admin_menu\', $sunshine_admin_submenu);
ksort($sunshine_admin_submenu);
foreach ($sunshine_admin_submenu as $item) {
    add_submenu_page(\'sunshine_admin\', $item[0], $item[1], $item[2], $item[3], $item[4]);
}
我在子菜单上应用了一个过滤器,因为我的插件有插件,可以添加额外的子菜单项。

我的问题出现在“设置”页面和“产品类别”分类法上

当您单击“设置”选项卡或“产品类别”分类法时,“我的阳光”主菜单不会打开以显示所有子菜单选项。如果我单击“Galleries”,它显示的很好,所有子菜单项都可见,“Galleries”以白色/粗体突出显示。

我进行了一些搜索,找到了一个支持主题,这使我实现了以下内容:

function sunshine_submenu_show_fix($parent_file) {
    global $current_screen;
    $taxonomy = $current_screen->taxonomy;
    if ($taxonomy == \'sunshine-product-category\')
        $parent_file = \'sunshine_admin\';
    return $parent_file;
}
add_action(\'parent_file\', \'sunshine_submenu_show_fix\');
当点击“Product Categories”(产品类别)时,所有子菜单项现在都可见,但“Product Categories”(产品类别)本身不像“Galleries”(画廊)那样是粗体/白色的。

我在这里的目标是能够单击“设置”或“产品类别”,并使“阳光”子菜单项全部可见,相应页面以白色/粗体显示。

1 个回复
SO网友:tutankhamun

试试看:

function sunshine_submenu_show_fix($parent_file) {
    global $plugin_page;
    $taxonomy = $current_screen->taxonomy;
    if ($taxonomy == \'sunshine-product-category\')
        $plugin_page = \'sunshine_admin\';
    return $parent_file;
}
add_action(\'parent_file\', \'sunshine_submenu_show_fix\');
说明:

在文件/wp管理/菜单标题中。php:

$parent_file = apply_filters( \'parent_file\', $parent_file );

get_admin_page_parent();
...
function _wp_menu_output(...) {
...
        if ( ( $parent_file && $item[2] == $parent_file ) || ( empty($typenow) && $self == $item[2] ) ) {
        $class[] = ! empty( $submenu_items ) ? \'wp-has-current-submenu wp-menu-open\' : \'current\';
...
                } else if (
                ( ! isset( $plugin_page ) && $self == $sub_item[2] ) ||
                ( isset( $plugin_page ) && $plugin_page == $sub_item[2] && ( $item[2] == $self_type || $item[2] == $self || file_exists($menu_file) === false ) )
            ) {
                $class[] = \'current\';
            }
...
}
在文件/wp admin/includes/plugin中。php:

...
function get_admin_page_parent( $parent = \'\' ) {
...
            if ( $parent_menu[2] == $plugin_page ) {
            $parent_file = $plugin_page;
...
            if ( isset( $plugin_page ) && ($plugin_page == $submenu_array[2] ) ) {
                $parent_file = $parent;
...
}

结束

相关推荐