我已为自定义帖子类型注册了自定义分类:
$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'
);
显示:
当我点击它(“类别”链接)时,分类编辑页面加载正常,但是,父菜单显示为折叠,子项(“类别”)未突出显示:
另一方面,自定义帖子类型(linke“虚拟产品”)按预期工作(参见第一张图片)。
我可以做一些黑客/变通办法,玩JS / CSS使其突出显示,但我想我在这里遗漏了一些东西..
那么,如何在自定义菜单下正确设置自定义分类菜单链接?
谢谢!
答案 0 :(得分:3)
好的,对于遇到同样问题的所有人来说......
你在做的是:
add_menu_page
请改为:
'show_in_menu'
参数 - 这将为您创建一个菜单。您可以通过在同一个args数组下设置'menu_position'
来控制它的显示位置。add_submenu_page
时,请使用'edit.php?post_type=%%post_type_name%%'
作为父级slug(第一个参数)。简单 - 不要做其他事情:)
感谢 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
}
}