为什么挂钩优先级会影响管理菜单权限错误?

时间:2012-02-07 作者:Yoav Aner

在…上this answer, 有最后的评论

对于未来的读者来说,罗兰的问题是一个悬而未决的问题。将优先级从10改为11在他的情况下解决了这个问题

答案似乎已经关闭了,所以我无法发表评论,但为什么/如何使用挂钩优先级使管理菜单工作或产生权限错误?

您没有足够的权限访问此页面。

1 个回复
最合适的回答,由SO网友:kaiser 整理而成

优先级

所有挂钩和;过滤器具有优先级。这些用于排序连接到挂钩的函数。默认情况下,优先级为10.

由于默认值为10,您的过滤器/操作很可能过早挂起,因此不会影响实际输出。

Edit:

<想象插件将其引导挂接到\'admin_init\' 钩子添加需要访问权限的内容。在引导程序中,它将某些内容挂接到(虚构的)\'fantastic_hook\'.\'after_theme_setup\' 钩在这里,您向(虚构的)添加了一些函数\'fantastic_hook\' 我也是print_r( $GLOBALS[\'wp_filter\'][\'fantastic_hook\'] ); 将如下所示:

[10] Array => [\'fantastic_hook\']
    ( 
        Array => [\'your_custom_extension\']
        Array => [\'the_plugin_bootstrap\']
    ) 
作为您的分机and 引导程序以优先级同时运行10. 但您的先添加,因此将首先运行。问题来了。。。

关于菜单项

管理菜单的工作原理非常相似:您有一个优先级(子)数组索引),它关心菜单项的排序和放置。

// Example for your functions.php:
function dump_filters()
{
    $output = \'\';
    foreach ( array( $GLOBALS[\'menu\'], $GLOBALS[\'submenu\'] ) as $item )
        $output .= var_export( $item, false );
    echo "<pre>{$output}</pre>";
}
add_action( \'adminmenu\', \'dump_filters\', 999 );
注:我写了一篇post 关于菜单顺序,在那里你可以看到reorder 阅读菜单,了解菜单的幕后内容及其局限性。

结束

相关推荐

hooks & filters and variables

我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴