菜单隐藏时无法创建新的CPT

时间:2012-11-06 作者:ken

我正在添加大量自定义帖子类型和分类法,因此如果没有将它们全部添加到管理菜单的顶层,通常会更加清晰。相反,我更愿意将它们添加到适当的子菜单下。我通过这两步方法做到了这一点,没有付出太多的努力:

注册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”重新打开了它)。然后我可以毫无问题地添加新项目。

2 个回复
最合适的回答,由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); 看看你需要做什么。

结束