行动挂钩优先权

任何数量的函数都可以挂钩到任何给定的动作。在某些情况下,钩子函数在其他函数之前或之后执行是很重要的,这是 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 );