我正在使用一个名为CMS页面顺序的插件http://wordpress.org/extend/plugins/cms-page-order/ (现称为CPO)
这很简单,所说的插件在每个自定义帖子类型的子菜单中添加了一个新项目。菜单项将指向一个页面,您可以在该页面中对特定帖子类型的帖子进行重新排序。
我添加了这样的内容,您可以直接从此视图创建新帖子,因此基本上与Wordpress中的默认编辑帖子视图类似,但您也可以重新排序您的帖子。这使得通常的后期编辑页面变得毫无用处。
So my question is, 我有没有办法删除“All”post type“s”子菜单项(edit.php?post_type=nameofposttype
) 将其替换为由CPO创建的此菜单项,同时使顶级菜单项本身指向由CPO创建的页面。
––
我一直在尝试用CPO使用插件管理菜单编辑器创建的子菜单项的URL替换顶级菜单项,但似乎不允许通过插件更改URL。然后我尝试将CPO菜单项移动到子菜单的顶部,因为我注意到顶级菜单项指向最顶层的子菜单项(即“所有页面/帖子”)。这也不起作用,因为它生成了一个错误的URL(它使顶级菜单项指向admin.php?page=order-xxx
)
这里有一些图片来进一步解释我的意思。
下面是顶级项作为默认项的行为(edit.php?post_type=xxx
)
现在,如果我使用特殊菜单处理程序将页面移动到顶部,会发生什么情况。顶级项获取新的URL,但它是错误的(admin.php?page=order-xxx
)
这是特殊菜单处理程序页面的URL,顶级菜单项应该具有的URL(edit.php?post_type=xxx&page=order-xxx
)
那么,如何将顶层菜单项更改为所需的URL?
最合适的回答,由SO网友:bueltge 整理而成
您还可以使用WordPress的全局变量更改菜单,以显示菜单和子菜单。所有第一项都在var中$menu
所有的高级船员都在$submenu
.
还有一个更改子菜单项顺序的小示例edit.php
.添加thius插件并通过调试查看结果。功能fb_cmp
只是重新排序的逻辑,但您可以在此函数中定义自定义顺序,她是usort
.
<?php
/**
* Plugin Name: .my Tests
* Plugin URI: http://bueltge.de/
* Description:
* Version: 0.0.1
*/
add_action( \'admin_init\', \'fb_get_menu\' );
function fb_get_menu() {
global $menu, $submenu;
var_dump( $submenu[\'edit.php\'] );
usort( $submenu[\'edit.php\'], \'fb_cmp\' );
echo \'<hr>\';
var_dump( $submenu[\'edit.php\'] );
}
function fb_cmp( $a, $b ) {
if ($a->value == $b->value)
return 0;
else
return $a->value < $b->value ? 1 : -1; // reverse order
}
在屏幕截图中提示结果。