有多种方法可以删除或重新排序这些。我已经创建了几个post类型(Test1、Test2、Test3)来测试以下方法。
CPT UI configuration way
您可以使用添加新的帖子类型
Settings > Show in menu 设置为
False 并且帖子类型根本不会出现在菜单中。
Plugin way
您可能需要尝试插件,例如
Admin Menu Editor (
https://wordpress.org/plugins/admin-menu-editor/) 结合前面的设置,这将允许拖放编辑菜单,并添加指向菜单中未显示的帖子类型的链接。
Manual code way
通过将其硬编码到自定义插件或主题函数中,可以获得与上述相同的结果。例如php。手动方式会过滤
register_post_type_args 钩
function wp332896_custom_post_type_args( $args, $post_type ) {
$post_types_to_not_show_in_menu = [\'test1\', \'test2\', \'test3\'];
if ( in_array($post_type, $post_types_to_not_show_in_menu) ) {
$args[\'show_in_menu\'] = false;
}
return $args;
}
add_filter( \'register_post_type_args\', \'wp332896_custom_post_type_args\', 20, 2 );
请注意,这与使用CPT UI配置将“显示在菜单中”值更改为false基本相同,只是写入代码。变量
$post_types_to_not_show_in_menu
保存不在菜单中显示的帖子类型数组。
Dynamic code way
如果您想对注册到CPT UI的所有帖子类型执行此操作,我们可以使用CPT UI的函数
cptui_get_post_type_data()
.
function wp332896_custom_post_type_args( $args, $post_type ) {
$post_types_to_not_show_in_menu = [];
if (function_exists(\'cptui_get_post_type_data\')) {
$post_types_to_not_show_in_menu = array_column(cptui_get_post_type_data(), \'name\');
}
if ( in_array($post_type, $post_types_to_not_show_in_menu) ) {
$args[\'show_in_menu\'] = false;
}
return $args;
}
add_filter( \'register_post_type_args\', \'wp332896_custom_post_type_args\', 20, 2 );
请注意
$post_types_to_not_show_in_menu
现在,使用该函数获取在CPT UI中注册的所有post类型的名称。
要完成它,您可以添加带有这些帖子类型的“文件夹”作为子菜单。我将使用字符串“cptfolder”连接文件夹和子菜单页面,但您可以使用任何一个。
function wp332896_folder_menu() {
$menu_slug = \'cptfolder\';
add_menu_page(\'Folder\', \'Folder\', \'manage_options\', $menu_slug);
$cpt_post_types = [];
if (function_exists(\'cptui_get_post_type_data\')) {
$cpt_post_types = cptui_get_post_type_data();
}
foreach($cpt_post_types as $post_type) {
add_submenu_page($menu_slug, $post_type[\'label\'], $post_type[\'label\'], \'manage_options\', \'edit.php?post_type=\'.$post_type[\'name\']);
}
}
add_action(\'admin_menu\', \'wp332896_folder_menu\');