我正在添加大量的自定义帖子类型和分类,因此如果我没有将它们全部添加到管理菜单的顶层,它通常会在视觉上更加清晰。相反,我宁愿在适当的子菜单下添加它们。我通过这两步方法毫不费力地做到了这一点:
例如,这是一个名为“公司”的CPT的add_submenu_page调用示例:
add_submenu_page (LG_ADMIN_MENU,"Companies","Companies","manage_options",'edit.php?post_type=companies');
通过采取这两个步骤,我现在可以查看CPT,我可以修改现有属性,我甚至可以删除记录,但我不能做的是添加记录。当我点击“添加新”按钮时,它会返回一个只显示“无效的帖子类型”的白色屏幕。
现在,如果我只是打开正常的顶级菜单(仅保留所有其他设置),我现在将菜单显示为子菜单(来自我的add_submenu_page调用)和顶级菜单(因为我用“show_ui”重新打开了。我可以添加没有问题的新项目。
答案 0 :(得分:2)
那是因为在/wp-admin/post-new.php
的第一行我们有这个:
if ( !isset($_GET['post_type']) )
$post_type = 'post';
elseif ( in_array( $_GET['post_type'], get_post_types( array('show_ui' => true ) ) ) )
$post_type = $_GET['post_type'];
else
wp_die( __('Invalid post type') );
您没有通过'show_ui' => true
条件。
获得创意的时间:)
add_action( 'admin_menu', 'so_13255525_admin_menu' );
function so_13255525_admin_menu()
{
global $submenu;
$submenu['index.php'][25] = $submenu['edit.php?post_type=portfolio'][5];
$submenu['index.php'][30] = $submenu['edit.php?post_type=portfolio'][10];
remove_menu_page( 'edit.php?post_type=portfolio' );
}
结果:
show_ui
设置为true。你必须根据自己的需要进行调整。
使用它来检查全局:
add_action( 'admin_notices', 'so_13255525_admin_notice' );
function so_13255525_admin_notice()
{
if( !current_user_can( 'delete_plugins' ) )
return;
global $submenu;
echo '<pre>' . print_r( $submenu, true ) . '</pre>';
}