带注销的条件重定向

时间:2015-05-12 作者:Jack T

我被要求在WordPress中实现自定义重定向。一开始看起来很简单,但我不知道怎么做才对。太多了,我甚至都不能开始。应该这样做:

用户登录,然后使用wp_login 挂钩如果满足特定条件,用户将使用wp_logout() 从wp\\u登录挂钩中,问题就出现在这里,用户应该被重定向到专用于他们的页面,而不破坏正常的注销功能,因此如果用户正常注销,他们会被重定向到默认页面,但是如果满足条件,他们会被重定向到另一个页面,仍然会被注销。

我试过了wp_logoutwp_clear_auth_cookie 钩子,但没有用。我无法真正向您展示任何代码,因为我没有想出任何具体的方法。

编辑:

 ....
 //in the login hook
 if($condition)
    wp_logout();
 ...
 add_action("wp_login","login_hook",10,2);

 //below the login hook
 function logout(){
    if($condition){
      wp_redirect(home_url("/redirectTo"));
      exit; 
     }
  }
 add_action("wp_logout","logout");

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

这个wp_logout() 函数为pluggable. 您应该能够编写自己的版本并“重载”核心功能:

function wp_logout() {

  $lid = get_current_user_id(); 

  wp_destroy_current_session();
  wp_clear_auth_cookie();

  do_action( \'wp_logout\' );
  /**
    * Fires after a user is logged-out.
    *
    * @since 1.5.0
    */
  if (2 == $lid) {
    wp_redirect(home_url("/redirectTo"));
    exit; 
  }

}

SO网友:Bysander

挂接操作位于的第603行pluggable.php 根据codex链接。

add_action( $hook, $function_to_add, $priority, $accepted_args ); 是您应该使用的格式,因此它可能看起来像:

 add_action( \'wp_logout\' , \'logout_page\' );

 function logout_page() {
   // Work out your conditions 

     if($condition1) {
       $page = *page*; // whatever page
     } else if ($condition2) {
       $page = *page*; // whatever page
     }

   header("Location: /$page");
  }
我对注销挂钩没有做太多的工作,但除非函数已经输出了一些东西(在那个阶段似乎不太可能),否则标题应该会将您带到正确的页面。

结束

相关推荐

Facebook php SDK 4 getSessionFromReDirect()始终为空

我已经安装了wordpress 4.1和以下插件:我插入了facebook sdk的一个功能。代码如下://Footer add_action(\'wp_footer\', \'my_footer\'); function my_footer() { $post_to_check = get_post(get_the_ID()); if ( is_singular() && has_shortcode( $post_to_check->