行动挂钩优先权
任何数量的函数都可以挂钩到任何给定的动作。在某些情况下,钩子函数在其他函数之前或之后执行是很重要的,这是 add_action()
,$priority
的第三个参数发挥作用的地方。
如果省略 $priority
参数,则该函数将附加默认优先级 10
。当动作被触发时,将从添加了最小 $priority
的那些开始调用钩住函数,并进入具有最大 $priority
的函数。共享相同优先级的任何钩子函数将按添加它们的顺序(它们各自的 add_action()
调用的执行顺序)调用。
例如,假设第三方插件使用与'template_redirect'
操作挂钩的功能,以便将访问者的 daily-deal
页面转发到外部电子商务站点的联合链接,但是你希望重定向仅发生在登录用户。你需要使用自己的'template_redirect'
挂钩将登出的访问者发送到登录页面。在确定第三方插件使用 10
的默认 $piority
附加它的功能后,你可以使用 9
的优先级挂钩你的功能,以确保你的登录检查首先发生:
function redirect_deal_visitors_to_login() {
if( is_page( 'daily-deal' ) && !user_is_logged_in() ) {
wp_redirect( wp_login_url() );
exit();
}
}
add_action( 'template_redirect', 'redirect_deal_visitors_to_login', 9 );