我目前正在开发使用两种自定义帖子类型的wordpress插件。我想在这里知道什么:是否可以将自定义帖子类型菜单添加为另一个自定义帖子类型的子菜单?

#1 楼

是。注册帖子类型时,需要将show_in_menu设置为您希望在其上显示的页面。

添加自定义帖子类型作为“帖子”子菜单我们将“电影”帖子类型设置为包含在“帖子”子菜单中。

register_post_type( 'movies',
    array(
            'labels' => array(
                    'name' => __( 'Movies' ),
                    'singular_name' => __( 'Movie' )
            ),
    'public' => true,
    'has_archive' => true,
    'show_in_menu' => 'edit.php'
    )
);


如果您将分类法注册到自定义帖子类型,则需要

add_submenu_page()中,第一个参数是分配给它的页面,最后一个是菜单项。

add_action('admin_menu', 'my_admin_menu'); 
function my_admin_menu() { 
    add_submenu_page('edit.php', 'Genre', 'Genre', 'manage_options', 'edit-tags.php?taxonomy=genre'); 
}  


将自定义帖子类型添加为另一种自定义帖子类型的子菜单

要将页面添加到另一种自定义帖子类型,请包括该帖子类型的查询字符串参数以及页面名称。

要在帖子类型娱乐下添加CPT电影及其分类类型,请调整代码,如下所示。 br />
register_post_type( 'movies',
    array(
            'labels' => array(
                    'name' => __( 'Movies' ),
                    'singular_name' => __( 'Movie' )
            ),
    'public' => true,
    'has_archive' => true,
    'show_in_menu' => 'edit.php?post_type=entertainment'
    )
);

add_action('admin_menu', 'my_admin_menu'); 
function my_admin_menu() { 
    add_submenu_page('edit.php?post_type=entertainment', 'Genre', 'Genre', 'manage_options', 'edit-tags.php?taxonomy=genre&post_type=entertainment'); 
}


评论


你好谢谢。有用。但是子菜单cpt丢失了其子菜单。

–阿里
13年8月18日在18:00

我已经用一种包含分类法的方法来更新我的答案。

–上电
13年8月21日在11:58

嗨,谢谢你!我已经找到了方法!但是也许您的会给出更好的结果!

–阿里
13年8月21日在12:57

show_in_menu属性对我不起作用。

–弗朗西斯科·科拉莱斯·莫拉莱斯(Francisco Corrales Morales)
15年2月26日在22:08

很抱歉重复。为了使子菜单和paretn菜单保持突出显示状态,您需要给WP一些信息。好的,当屏幕上显示“ my_post_type”时,“ show_in_menu”参数使子菜单为当前/突出显示。现在,我们还需要添加另一个操作,该操作将突出显示父菜单。您可以尝试以下方法:add_filter('parent_file','menu_highlight'));功能menu_highlight($ parent_file){全局$ plugin_page,$ post_type;如果('my_post_type'== $ post_type){$ plugin_page ='edit.php?post_type = my_post_type'; //子菜单挂钩名称} return $ parent_file; }

– TomeeNS
17年5月26日在15:59



#2 楼

我们的自定义帖子类型:

$args['show_in_menu'] = false;
register_post_type('custom_plugin_post_type', $args);


为现有的自定义帖子类型添加他(例如“产品”):

$existing_CPT_menu = 'edit.php?post_type=product';
$link_our_new_CPT = 'edit.php?post_type=custom_plugin_post_type';
add_submenu_page($existign_CPT_menu, 'SubmenuTitle', 'SubmenuTitle', 'manage_options', $link_our_new_CPT);


或添加我们的自定义插件菜单:

// Create plugin menu
add_menu_page('MyPlugin', 'MyPlugin', 'manage_options', 'myPluginSlug', 'callback_render_plugin_menu');

// Create submenu with href to view custom_plugin_post_type
$link_our_new_CPT = 'edit.php?post_type=custom_plugin_post_type';
add_submenu_page('myPluginSlug', 'SubmenuTitle', 'SubmenuTitle', 'manage_options', $link_our_new_CPT);


评论


谢谢!对我有帮助。

– NSukonny
19年11月27日在11:39