成功登录后,来自快捷码的登录表单不会重定向

时间:2016-01-11 作者:dwinnbrown

因此,我试图在我的一个页面上显示默认wordpress登录表单的工作版本。函数中有代码。php文件,创建了短代码,据我所知,它工作顺利,但在提交表单后,它只会刷新页面,而不会重定向到我指定的url。。。有人能理解为什么它不能正常工作吗?

这是我在函数中输入的函数。php文件:

//Login form Shortcode
add_shortcode( \'login-form\', \'my_login_form_shortcode\' );
/**
 * Displays a login form.
 *
 * @since 0.1.0
 * @uses wp_login_form() Displays the login form.
 */
function my_login_form_shortcode( $atts, $content = null ) {

    $defaults = array(      "redirect"              =>  site_url( $_SERVER[\'REQUEST_URI\'] )
                        );

        extract(shortcode_atts($defaults, $atts));
        if (!is_user_logged_in()) {
        $content = wp_login_form( array( \'echo\' => false, \'redirect\' => $redirect ) );
        }
    return $content;
}
然后我将其放置在所需页面中,如下所示:

[login-form redirect="https://myurl.com"]
但它不是将我重定向到正确的页面,而是刷新页面,即使我现在已成功登录。。。有什么想法吗?

2 个回复
SO网友:Paul G.

您面临的问题是因为WordPress重定向的性质。它使用所谓的安全重定向,即wp_safe_redirect(). 这将限制重定向到local 仅限URL。

在WordPress为您执行之前,您可以跳入登录重定向过滤器并执行所需的重定向。

保留以前的所有代码,并添加以下内容:


add_filter( \'login_redirect\', \'my_login_form_redirect\', 0, 1 );

function my_login_form_redirect( $redirect ) {
    if ( !empty( $_POST[ \'redirect_to\' ] ) && filter_var( $_POST[ \'redirect_to\' ], FILTER_VALIDATE_URL ) ) {
        wp_redirect( $_POST[ \'redirect_to\' ] );
    }
    return $redirect; 
}

SO网友:HK89

wp\\u login\\u表单仅重定向当前站点url重定向,否则通过defult重定向到当前页面(如果用户是admin,则重定向到admin面板)

function my_login_form_shortcode( $atts, $content = null ) {

      $defaults = array( "redirect" =>  site_url( $_SERVER[\'REQUEST_URI\'] ));

        extract(shortcode_atts($defaults, $atts));
        if (is_user_logged_in()) {               
          echo \'<div class="logout"> <p>Hello!<div class="logout_user"> You are logged in and can proceed to the <a href="http://yourcurrenturl.info/">Online Seminar</a>.</div></p><br /><p><a id="wp-submit" class="logout" href="\', wp_logout_url(), \'" title="Logout">Logout</a></p></div>\';
      } else { 
          $args = array(
              \'echo\'           => true,
              \'redirect\'       => $redirect,
              \'label_log_in\'   => __( \'Log in\' ),
              \'form_id\'        => \'demo-login\',
              \'label_username\' => __( \'Username\' ),
              \'label_password\' => __( \'Password\' ),
              \'label_remember\' => __( \'Remember Me\' ),
              \'id_username\'    => \'user_login\',
              \'id_password\'    => \'user_pass\',
              \'id_submit\'      => \'wp-submit\',
              \'remember\'       => true,
              \'value_username\' => NULL,
              \'value_remember\' => true
          );
         $content = wp_login_form($args); 
      }
    echo $content;
}

add_shortcode( \'login-form\', \'my_login_form_shortcode\' );
[登录表单重定向=”;http://yourcurrenturl.info/any/";]

相关推荐

Login fail with no error

从今天早上开始,我没有明显的理由不能登录我的Wordpress网站https://www.taoperf.com昨天它工作得很好-从那时起,没有执行任何更新,也没有通过wp admin执行任何活动症状:我选择登录菜单选项,输入用户名和密码。。。它会返回到主屏幕,地址栏中显示“;?wppb\\U cpm\\U重定向=是“;我没有登录。登录页面是tao\\u login581(我想这是AIO WP Security设置的)我尝试的内容(在每次测试之间清除缓存):启用了在wp配置中记录错误。php=在任何测试期