【问题标题】:Redirect to a unique page after password reset重置密码后重定向到唯一页面
【发布时间】:2016-11-22 19:10:37
【问题描述】:

浏览您的论坛,我找到了这段代码,而且它肯定会重定向,但它在此人有机会提交密码重置之前就已重定向。

基本上,我希望用户能够去

网址:网站/wp-login.php?action=lostpassword

提交密码重置然后重定向到

网址:网站/Unique_Page

任何智慧都会受到赞赏。谢谢!

 function possibly_redirect(){
  global $pagenow;
  if( 'wp-login.php' == $pagenow ) {
    if ( isset( $_POST['wp-submit'] ) ||   // in case of LOGIN
      ( isset($_GET['action']) && $_GET['action']=='logout') ||   // in case of LOGOUT
      ( isset($_GET['checkemail']) && $_GET['checkemail']=='confirm') ||   // in case of LOST PASSWORD
      ( isset($_GET['checkemail']) && $_GET['checkemail']=='registered') ) return;    // in case of REGISTER
    else wp_redirect( home_url() ); // or wp_redirect(home_url('/login'));
    exit();
  }
}
add_action('init','possibly_redirect');

【问题讨论】:

  • 使用&& (AND) 而不是|| (OR)。
  • 你好弗雷德,谢谢。我改变了“||”在所有三个位置到“&&”,但“忘记密码的链接仍然重定向到主页。
  • 让它在 function.php 文件中使用不同的代码 :-) 感谢您的时间codex.wordpress.org/Plugin_API/Filter_Reference/…
  • 很高兴听到这个消息,不客气。 Wordpress 不是我的包。我主要处理原始 php。

标签: php wordpress function redirect


【解决方案1】:

您的函数会重定向除非这些操作是通过 URL 参数直接传递的(或者在登录的情况下是 Post)。你想要的是检查checkemail,然后重定向。我在这里使用了login_head 操作,不确定是否有更好的操作,但它有效:

function redirect_after_lost_password() {
    if( isset($_GET['checkemail']) && $_GET['checkemail'] === 'confirm') {
        wp_redirect( home_url( '/yourpage' ) );
        exit;
    }
}
add_action( 'login_head', 'redirect_after_lost_password' ); 

如果您想在密码重置后重定向用户,lostpassword_redirect filter 是您的朋友:

function redirect_after_password_reset( $lostpassword_redirect ) {
    return home_url( '/yourpage' );
}
add_filter( 'lostpassword_redirect', 'redirect_after_password_reset' );

【讨论】:

    最近更新 更多