我通过此代码在管理面板中添加了一个页面菜单,它运行正常。
add_menu_page('Ads Dashboard', 'Ads Dashboard', 'administrator', 'adverts', 'advert_admin_options');
现在我需要在此菜单下添加/注册帖子类型,但它无法正常工作。似乎我的代码中出现了问题,这是我的完整代码:
function add_ads_post_type(){
register_post_type('ads', array(
'labels' => array(
'name' => __('Adverts', 'theme'),
'singular_name' => __('Adverts', 'theme'),
'menu_name' => __('Adverts', 'theme'),
'add_new' => __('Add Advert Item', 'theme'),
'add_new_item' => __('Add New Advert item', 'theme'),
'edit_item' => __('Edit Advert item', 'theme'),
'new_item' => __('New Advert item', 'theme'),
'view_item' => __('View Advert item', 'theme'),
'search_items' => __('Search Advert items', 'theme'),
'not_found' => __('No Advert found', 'theme'),
'not_found_in_trash' => __('No Advert items found in Trash', 'theme'),
),
'public' => TRUE,
'rewrite' => array('slug' => 'ads', 'with_front' => false),
'has_archive' => true,
'supports' => array('title', 'editor'),
'show_in_menu' => 'admin.php?page=adverts'
));
}
function advert_add_to_menu() {
if (is_admin()) {
add_menu_page('Ads Dashboard', 'Ads Dashboard', 'administrator', 'adverts', 'advert_admin_options');
add_submenu_page('adverts', 'Ads', 'Ads', 10, 'ads-list', 'add_ads_post_type' );
}
}
add_action('admin_menu', 'advert_add_to_menu');
答案 0 :(得分:1)
试试这个:帖子类型是'广告'
//REMOVE MENU
function remove_menu_CPT_ads() {
remove_menu_page( 'edit.php?post_type=ads' );
}
add_action( 'admin_menu', 'remove_menu_CPT_ads' );
function add_my_menu(){
add_submenu_page('adverts', 'Ads', 'Ads', 'manage_options', 'my-top-level-slug','Your_function');
}
add_action('admin_menu','add_my_menu');
function Your_function(){
wp_redirect(admin_url().'/edit.php?post_type=ads');
exit;
}
function add_ob_start(){
if(is_admin()){
ob_start();
}
}
add_action('admin_init', 'add_ob_start');
答案 1 :(得分:1)
<?php
add_menu_page('Page title', 'Top-level menu title', 'manage_options', 'my-top-level-handle', 'my_magic_function');
add_submenu_page( 'my-top-level-handle', 'Page title', 'Sub-menu title', 'manage_options', 'my-submenu-handle', 'my_magic_function');
?>
以下是在自定义帖子类型菜单块下添加选项页面的示例(另请参见此处):
<?php
add_submenu_page('edit.php?post_type=wiki', 'Options', 'Options', 'manage_options', 'wiki-options', array(&$this, 'options_page') );
?>
答案 2 :(得分:0)
为什么这么努力的人?
只需使用 show_in_menu
参数。像:'show_in_menu' => adverts'
在自定义菜单元素的情况下,其中 adverts
是菜单 uid。
如果您想放置到已经存在的菜单元素中,例如在另一个帖子类型菜单块下,那么您可以使用 'show_in_menu' => 'edit.php?post_type={CTP}'
,
https://imtiazrayhan.com/multiple-custom-post-types-menu-section/
我知道它很旧,但也许这可以节省一些时间:)
答案 3 :(得分:0)
我知道这是一个老问题,批准的答案确实有效,但我发现以下博客文章非常有帮助。 https://shellcreeper.com/how-to-add-wordpress-cpt-admin-menu-as-sub-menu/
要快速入门,请使用以下内容。阅读完整的博客以使突出显示/活动页面工作:
show_in_menu 参数必须为 false
register_post_type( 'your-cpt', array(
'description' => '',
'public' => true,
'show_ui' => true,
'show_in_menu' => false, /* Do not show admin menu */
[...]
) );
将子菜单添加到父菜单
add_submenu_page(
'Ads_Dashboard', // parent slug
'Your CPT Title', // page title
'Sub Menu Title', // sub-menu title
'edit_posts', // capability
'edit.php?post_type=your-cpt' // your menu menu slug
);