更改顶级菜单项以指向自定义子菜单项

时间:2012-09-29 作者:INT

我正在使用一个名为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)

这里有一些图片来进一步解释我的意思。Here's how the top level item regurlarly behaves

下面是顶级项作为默认项的行为(edit.php?post_type=xxx)

Now here's what happens if I move my page with the special menu handler to the top. The top level item gets a new URL, but it's erroneous

现在,如果我使用特殊菜单处理程序将页面移动到顶部,会发生什么情况。顶级项获取新的URL,但它是错误的(admin.php?page=order-xxx)

Here's the url that the special menu handler page has, the URL that the top level menu item should have

这是特殊菜单处理程序页面的URL,顶级菜单项应该具有的URL(edit.php?post_type=xxx&page=order-xxx)

那么,如何将顶层菜单项更改为所需的URL?

3 个回复
最合适的回答,由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
}
在屏幕截图中提示结果。enter image description here

SO网友:loQ

您是否考虑过jquery?也许这对你有帮助。我试过了,成功了。把这个放在你的函数里。php

add_action(\'admin_footer\', \'change_post_url\');
function change_post_url(){
?>
<script>
    jQuery(document).ready(function($){         
        $(".anchor_class_name").attr("href","sample.php");
    });
</script>
<?php
}

SO网友:kaiser

好吧,你可以简单地使用add_query_arg( \'key\', \'value\' ); 注册页面时。

我解释了WordPress管理菜单系统的细节in this blog article. 无法发布此Head,因为它太多太多。

结束

相关推荐

编辑功能-admin_init

我在角色和能力方面有点困难。编辑们被判“作弊”呃-尝试更新自定义主题设置时的消息。有人能解释一下原因吗?或者甚至能找到解决办法吗?<?php add_action(\'admin_menu\', \'add_global_custom_options\'); function add_global_custom_options() { add_menu_page(\'Indstillinger\', \'Indstillinger\', \'moderate_comments