我使用上一页的会话变量以编程方式登录Wordpress中的用户(在发送标题之前)。稍后在同一页面的body部分中,我将var_dump:wp_get_current_user()。这将返回我登录的WP_User。在“登录”部分,我尝试了wp_signon(),wp_set_current_user()和wp_set_auth_cookie()的组合。
问题来了,当我离开此页面时,用户不再登录。当我使用wp-login.php时,用户仍然保持登录状态。我已经挣扎了很长一段时间,似乎无法找到,为什么用户不会保持登录状态。
有人可以帮忙吗。我将在下面添加当前使用的代码片段:
$creds = array(
"user_login" => $_SESSION['email'],
"user_password" => $newPass,
"remember" => true
);
$user = wp_signon( $creds );
if ( is_a( $user, 'WP_User' ) ) {
wp_set_current_user( $user->ID, $user->user_login );
wp_set_auth_cookie( $user->ID, true );
}
// Code follows ...
<body>
<?php if ( is_user_logged_in() ) var_dump(wp_get_current_user()); ?>
答案 0 :(得分:0)
它在哪里执行?你需要把它放在一个动作中。使用: ADD_ACTION(&#39; theme_setup&#39;&#39; your_code&#39); function your_code(){ //登录代码块在这里 };
答案 1 :(得分:0)
我最终将一段代码移动到另一个文件。我没有提到的是我在同一页面上使用了 wp_create_user 。只要我将 wp_set_current_user 和 wp_set_auth_cookie 替换为 wp_signon 并将其移至单独的页面,一切都运行良好。