WordPress将您的操作放入具有索引优先级的数组中。您可以通过打印(在“管理”面板中)看到这一点admin_init
) $wp_filter
:
*Note*正如@s\\u ha\\u dum在下面的评论中指出的那样,admin_init
可能无法捕获动作中添加的所有挂钩,可能会连接到更可靠的打印输出shutdown
相反
function filter_print() {
global $wp_filter;
print_r( $wp_filter[\'admin_bar_menu\'] );
die();
}
add_action( \'admin_init\', \'filter_print\' );
这给了我们一个整洁的数组,看起来像这样:(简化)
Array(
[admin_bar_menu] => Array (
[0] => Array (
[wp_admin_bar_my_account_menu] => Array (
[function] => wp_admin_bar_my_account_menu
[accepted_args] => 1
)
[wp_admin_bar_sidebar_toggle] => Array (
[function] => wp_admin_bar_sidebar_toggle
[accepted_args] => 1
)
)
[4] => Array (
[wp_admin_bar_search_menu] => Array (
[function] => wp_admin_bar_search_menu
[accepted_args] => 1
)
)
[7] => Array (
[wp_admin_bar_my_account_item] => Array (
[function] => wp_admin_bar_my_account_item
[accepted_args] => 1
)
)
[10] => Array (
[wp_admin_bar_wp_menu] => Array (
[function] => wp_admin_bar_wp_menu
[accepted_args] => 1
)
)
[20] => ...
)
)
0、4、7、10等是操作的优先级,当添加新操作时,它的默认值为10,类似于上例中的索引0,它们只是堆叠到数组的同一索引中。考虑到此特定操作中添加了许多挂钩,您可能希望在最后或在运行特定操作(如菜单)之后添加这些挂钩。两个优先事项中的一个也可以同样有效地发挥作用:
81
或
201
.
在大多数情况下,默认优先级10就足够了。其他时候,您希望在另一个钩子之后直接添加钩子(可能会使其无效或删除特定项),在这种情况下,您可以使用global $wp_filter;
找出它需要去哪里。