自定义管理菜单下未突出显示WordPress自定义分类链接

时间:2013-11-16 23:59:32

标签: wordpress custom-taxonomy

我已为自定义帖子类型注册了自定义分类:

$labels = array(
    ...labels here...
);

$args = array(
    'label'             => __('Categories', $this->text_domain),
    'labels'            => $labels,
    'public'            => true,
    'show_ui'           => true,
    'show_in_nav_menus' => true,
    'show_admin_column' => true,
    'hierarchical'      => true,
    'query_var'         => true,
    'rewrite'           => array('slug' => 'virtual-product-category'),
);

register_taxonomy('virtual_product_cat', array('virtual_product'), $args);

按预期工作 - 我可以为自定义帖子选择自定义类别。

然后我将其添加到自定义菜单中:

add_submenu_page(
    'virtual',
    __('Virtual Product Categories', $this->text_domain),
    __('Categories', $this->text_domain),
    'edit_products',
    'edit-tags.php?post_type=virtual_product&taxonomy=virtual_product_cat'
);

显示:

Virtual Products

当我点击它(“类别”链接)时,分类编辑页面加载正常,但是,父菜单显示为折叠,子项(“类别”)未突出显示:

Virtual Product Categories

另一方面,自定义帖子类型(linke“虚拟产品”)按预期工作(参见第一张图片)。

我可以做一些黑客/变通办法,玩JS / CSS使其突出显示,但我想我在这里遗漏了一些东西..

那么,如何在自定义菜单下正确设置自定义分类菜单链接?

谢谢!

4 个答案:

答案 0 :(得分:3)

好的,对于遇到同样问题的所有人来说......

你在做的是:

  1. 使用add_menu_page
  2. 创建自定义菜单
  3. 创建自定义帖子类型/分类
  4. 尝试在新菜单下推送自定义分类编辑链接
  5. 请改为:

    1. 不要手动创建任何菜单(!)
    2. 添加自定义帖子类型时,请勿设置'show_in_menu'参数 - 这将为您创建一个菜单。您可以通过在同一个args数组下设置'menu_position'来控制它的显示位置。
    3. 将此新创建的菜单用于要添加的所有其他自定义页面。在致电add_submenu_page时,请使用'edit.php?post_type=%%post_type_name%%'作为父级slug(第一个参数)。
    4. 简单 - 不要做其他事情:)

      感谢 Obmerk Kronen stink ,他们试图提供帮助。感谢这一点。

答案 1 :(得分:0)

您可以将其用作模板,或者像我一样使用此taxonomy generator

// Register Custom Taxonomy
function Stack_Overflow()  {

$labels = array(
    'name'                       => _x( 'Question', 'Taxonomy General Name', 'stack_overflow' ),
    'singular_name'              => _x( 'Question', 'Taxonomy Singular Name', 'stack_overflow' ),
    'menu_name'                  => __( 'Stack Overflow', 'stack_overflow' ),
    'all_items'                  => __( 'All Questions', 'stack_overflow' ),
    'parent_item'                => __( 'Language', 'stack_overflow' ),
    'parent_item_colon'          => __( 'Framework', 'stack_overflow' ),
    'new_item_name'              => __( 'New Question', 'stack_overflow' ),
    'add_new_item'               => __( 'Ask Question', 'stack_overflow' ),
    'edit_item'                  => __( 'Edit Question', 'stack_overflow' ),
    'update_item'                => __( 'Edit Question', 'stack_overflow' ),
    'separate_items_with_commas' => __( '', 'stack_overflow' ),
    'search_items'               => __( 'Search Questions', 'stack_overflow' ),
    'add_or_remove_items'        => __( 'Add or Remove Questions', 'stack_overflow' ),
    'choose_from_most_used'      => __( 'Choose from the most popular languages', 'stack_overflow' ),
);
$rewrite = array(
    'slug'                       => 'questions',
    'with_front'                 => true,
    'hierarchical'               => true,
);
$args = array(
    'labels'                     => $labels,
    'hierarchical'               => true,
    'public'                     => true,
    'show_ui'                    => true,
    'show_admin_column'          => true,
    'show_in_nav_menus'          => true,
    'show_tagcloud'              => true,
    'query_var'                  => 'question',
    'rewrite'                    => $rewrite,
    'update_count_callback'      => 'display_edit_count',
);
register_taxonomy( 'stakoverflow', 'page', $args );

}

// Hook into the 'init' action
add_action( 'init', 'Stack Overflow', 0 );

答案 2 :(得分:0)

我一直在寻找相同的东西,但我不想让自定义帖子类型作为主菜单。

我最终在WP.org支持论坛上发现了这个链接http://wordpress.org/support/topic/moving-taxonomy-ui-to-another-main-menu

下面列出的代码。

function recipe_tax_menu_correction($parent_file) {
    global $current_screen;
    $taxonomy = $current_screen->taxonomy;
    if ($taxonomy == 'ingredient' || $taxonomy == 'cuisine' || $taxonomy == 'course' || $taxonomy == 'skill_level')
        $parent_file = 'recipe_box_options';
    return $parent_file;
}
add_action('parent_file', 'recipe_tax_menu_correction');

答案 3 :(得分:0)

@sPaul您在答案中引用的内容适用于自定义帖子类型,但不适用于分类法。自定义分类法没有'menu_position' arg。您在问题中所做的工作可以很好地在您的菜单下创建链接:

add_submenu_page(
    'virtual',
    __('Virtual Product Categories', $this->text_domain),
    __('Categories', $this->text_domain),
    'edit_products',
    'edit-tags.php?post_type=virtual_product&taxonomy=virtual_product_cat'
);

但为了让它显示正确的样式,你需要添加一些JS来添加/删除类。以下是(从https://wordpress.stackexchange.com/a/225228/80088修改):

add_action( 'admin_head-edit-tags.php', 'modify_menu_highlight_wpse_43839' );

function modify_menu_highlight_wpse_43839()
{
    if( 'virtual_product_cat' == $_GET['taxonomy'] )
    {       
        ?>
        <script type="text/javascript">
            jQuery(document).ready( function($) 
            {
                $("#menu-posts, #menu-posts a")
                    .removeClass('wp-has-current-submenu')
                    .removeClass('wp-menu-open')
                    .addClass('wp-not-current-submenu'); 
                $("#toplevel_page_ virtual, #toplevel_page_ virtual > a")
                    .addClass('wp-has-current-submenu');
            });     
        </script>
        <?php
    }
}