我希望你做得很好。
我在WordPress上工作。我注册了新的文章类型和两个新的分类法和一个子菜单页面。现在我的菜单看起来像这样。
数据集为Post类型。
种和组是分类学。
上载关系CSV为子菜单页
数据集
→所有数据集
→添加新数据集
→物种
→团体
→上传关系CSV
我想更改子菜单项的顺序。
新秩序必须
数据集
→所有数据集
→物种
→团体
→上传关系CSV
→添加新数据集
add_filter( 'custom_menu_order', '__return_true' );
add_filter( 'menu_order', function( $custom_order ) {
return array(
'edit.php?post_type=datasets',
'edit-tags.php?taxonomy=species&post_type=datasets',
'edit-tags.php?taxonomy=group&post_type=datasets',
'edit.php?post_type=datasets&page=upload-homologs-relations',
'post-new.php?post_type=datasets',
);
} );
但是这个代码对我没有帮助。
我尝试了新的代码。
function custom_submenu_order( $submenu, $parent_slug ) {
// Make sure you replace "dataset" with the slug of your custom post type
if ( $parent_slug === 'edit.php?post_type=dataset' ) {
// Define the new order of the submenu items
$new_order = array(
'edit-tags.php?taxonomy=species&post_type=dataset', // "Species"
'edit-tags.php?taxonomy=groups&post_type=dataset', // "Groups"
'admin.php?page=upload-csv', // "Upload Relational CSV"
'post-new.php?post_type=dataset' // "Add new Dataset"
);
// Sort the submenu items based on the new order
uasort( $submenu[ $parent_slug ], function( $a, $b ) use ( $new_order ) {
$a_index = array_search( $a[2], $new_order );
$b_index = array_search( $b[2], $new_order );
return $a_index - $b_index;
} );
}
return $submenu;
}
add_filter( 'submenu_order', 'custom_submenu_order', 10, 2 );
然后我得到了它的钩子submenu_order不存在于WordPress中.请帮助我找到解决方案.
1条答案
按热度按时间wgx48brx1#
答案是Nagendra Rao对这个问题Wordpress: Change admin submenu order的回答。
Nagendra Rao的答案有这样一行代码:
...实际上应该是两个add_filter()调用:
...其中CALLBACK_FUNCTION使用menu_order过滤器钩子,可能类似于下面的函数。
回调函数
重新排序顶层和子菜单项
下面的回调函数演示了如何修改顶级菜单项和子菜单项。两者之间有一个重要的区别。
menu_order
传递的$menu_ord
参数用于修改顶级项。您从$menu_ord
中删除或省略的项将自动以其通常的顺序重新添加到最终结果中,位于您包含的项之后。这与$submenu
全局变量不同。如果从$submenu
中删除或省略项,则不会将这些缺失项重新添加到最终结果中。$submenu全局变量的echo输出示例
$submenu
数组的Post数组元素(edit.php)的echo输出可能如下所示: