从前端以编程方式将用户登录到WordPress后端时出现的问题

时间:2018-07-10 06:46:47

标签: php wordpress

我试图创建一个自定义的前端登录页面。我知道有很多前端登录插件,例如配置文件生成器,但是我需要根据只读用户名的特殊客户端要求开发一个自定义插件,该用户名由作为URL参数传递的用户名填充,然后输入密码并提交,我们需要登录用户并将其重定向到WordPress个人资料页面。这就是为什么我创建一个自定义登录页面作为主题模板的原因。

提交后,我在验证密码后添加了此代码,以登录用户并重定向到个人资料页面

wp_set_current_user( $user_info->ID, $user_info->user_login );
wp_set_auth_cookie( $user_info->ID, true, false );
do_action( 'wp_login', $user_info->user_login );

if (is_user_logged_in()) {
  wp_safe_redirect('/wp-admin/profile.php');
}

有时这可以正常工作,并且加载配置文件页面。但是有时,它无法正常工作,并且将其从个人资料页面重定向到wp-login.php

我什至尝试添加以下代码

$creds = array();
$creds['user_login'] = $user_info->user_login;
$creds['user_password'] = $user_pass;
$creds['remember'] = true;

$user = wp_signon( $creds, false );

但是没有用。

我坚持这一点,因为除了在互联网上尝试以编程方式在Wordpress中登录用户外,我什么都没有看到。但这有时不起作用。始终将用户标识为在前端登录(使用is_user_logged_in()检查或检索前端当前登录的用户时)。但是后端有时无法将其标识为已登录。

请帮助我找出问题所在以及解决方法

1 个答案:

答案 0 :(得分:0)

您可以使用“仅限前端用户” plugin,也可以按照code进行操作。

可以通过此参数完成

$args = array(
                        'echo'           => true,
                        'redirect'       => home_url( '/wp-admin/' ), 
                        'form_id'        => 'loginform',
                        'label_username' => __( 'Username' ),
                        'label_password' => __( 'Password' ),
                        'label_remember' => __( 'Remember Me' ),
                        'label_log_in'   => __( 'Log In' ),
                        'id_username'    => 'user_login',
                        'id_password'    => 'user_pass',
                        'id_remember'    => 'rememberme',
                        'id_submit'      => 'wp-submit',
                        'remember'       => true,
                        'value_username' => NULL,
                        'value_remember' => true
                    ); 

                    // Calling the login form.
                    wp_login_form( $args );