WordPress将您的操作放入具有索引优先级的数组中。您可以通过打印出来(在管理面板中admin_init)来$wp_filter查看:
* 注意 *正如@s_ha_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,它们只是堆叠到数组的相同索引中。考虑到在此特定操作中添加了许多钩子,因此您想在运行特定操作(例如menu)的最后或最后添加。两个优先事项之一也可以同样有效地工作:81或201。
在大多数情况下,默认优先级10足够了。其他时候,您想直接添加另一个钩子(以取消其用途或删除特定项目),在这种情况下,您可以使用global $wp_filter;来确定钩子的位置。