我正在添加大量自定义帖子类型和分类法,因此如果没有将它们全部添加到管理菜单的顶层,通常会更加清晰。相反,我更愿意将它们添加到适当的子菜单下。我通过这两步方法做到了这一点,没有付出太多的努力:
注册CPT时使用“show\\u ui”属性隐藏CPT,使用add\\u submenu\\u page()调用将其添加回。例如,下面是一个名为“companys”的CPT的add\\u submenu\\u page调用示例:
add_submenu_page (LG_ADMIN_MENU,"Companies","Companies","manage_options",\'edit.php?post_type=companies\');
通过这两个步骤,我现在可以查看CPT,可以修改现有属性,甚至可以删除记录,但我不能做的是添加记录。当我点击“添加新”按钮时,它会返回一个白色屏幕,屏幕上只显示“无效的帖子类型”。
现在,如果我只打开普通的顶级菜单(保留所有其他设置),我会得到现在显示为子菜单(从我的add\\u submenu\\u页面调用)和顶级菜单的菜单(因为我已经用“show\\u ui”重新打开了它)。然后我可以毫无问题地添加新项目。
最合适的回答,由SO网友:TheDeadMedic 整理而成
你试过了吗show_in_menu
相反
register_post_type( \'companies\', array(
\'show_in_menu\' => LG_ADMIN_MENU,
\'show_ui\' => true,
\'...\',
));
SO网友:s_ha_dum
现在还不完全清楚你指的是哪个“添加新”按钮,但如果你说的是出现在“edit.php?post\\u type=“页面(至少通常)顶部的“添加新”按钮,则可以更改该URL,但这是“黑客ie”。我想这就是你需要做的。
function reset_new_link() {
global $post_new_file;
$post_new_file = admin_url(\'whatever\');
}
add_action(\'admin_head\',\'reset_new_link\');
将此代码视为一种概念证明。您不想按原样使用它,因为它会改变整个后端的链接。您需要为何时更改链接和何时不更改链接添加条件。您需要的大部分信息可能都在
$post_type_object
对象添加
global $post_type_object; var_dump($post_type_object);
看看你需要做什么。