wp_signon trả về người dùng, nhưng người dùng chưa đăng nhập


7

Tôi sử dụng wp_signon()và nó trả về một người dùng, không phải là một lỗi. Tuy nhiên khi tôi làm is_user_logged_in()nó trả về false.

Sự giúp đỡ được đánh giá cao :)

Câu trả lời:


4

Sau khi sử dụng wp_signon(), thông tin người dùng không được đặt, đó là cách WP kiểm tra người dùng is_user_logged_in(). Nó chỉ là một vấn đề gọi get_currentuserinfo()sau wp_signon().


Có thể sao chép người dùng đã đăng nhập thông qua hình thức đăng nhập. Tôi muốn người dùng đăng nhập, như đăng nhập thường xuyên.

1
cố gắng $creds = array(); $creds['user_login'] = $user_login; $creds['user_password'] = $user_pass; $creds['remember'] = true; $user = wp_signon( $creds, false );ghi nhớ người dùng
Philip Seyfi

4

get_cienuserinfo () không làm việc cho tôi. Tôi đã viết về vấn đề và giải pháp này tại blog của mình:

http://blog.rhysgoodwin.com/programming/wordpress-wp_signon-civerse_user-is-not-population/

Chúc mừng, Rhys


2
Điều này thực sự có ích. Trong trường hợp blog bị mất, ông nói sẽ sử dụng wp_set_current_user()sau wp_signon().
d79

Làm việc cho tôi người anh em.

get_currentuserinfo()bây giờ không được chấp nhận, tuy nhiên wp_get_current_user()làm việc cho tôi
mistertaylor

0

Tôi đã có vấn đề tương tự. Ở đây đoạn trích làm việc đầy đủ đã khắc phục vấn đề đó:

    if( isset($_POST['log']) && isset($_POST['pwd']) ):
      $creds = array( 'user_login' =>  $_POST['log'], 'user_password' => $_POST['pwd'], 'remember' => $_POST['rememberme'] );
      $user = wp_signon( $creds, false );
      if ( is_wp_error($user) ): echo $user->get_error_message(); endif;
      wp_set_current_user($user->ID);
      return $user;
    endif;

Cũng wp_logout()có vấn đề tương tự. Đây là cách để làm cho nó hoạt động quá:

wp_logout();  
wp_set_current_user(0);

0
 //the function wp_signon is under construction yet if you open wordpress core files
 //you will find this comment

 // TODO do we deprecate the wp_authentication action?

 //i figured out a solution
 function login_after_register($userlogin,$userpass){
$credentials = array( 'user_login' =>  $userlogin, 'user_password' => $userpass, 'remember' => true );

$secure_cookie = is_ssl();

$secure_cookie = apply_filters('secure_signon_cookie', $secure_cookie, $credentials);
add_filter('authenticate', 'wp_authenticate_cookie', 30, 3);

$user = wp_authenticate($credentials['user_login'], $credentials['user_password']);
wp_set_auth_cookie($user->ID, $credentials["remember"], $secure_cookie);
do_action('wp_login', $user->user_login, $user);
 }
 //then you should call it this way
 //before get_header() or any html
 login_after_register($_POST['r_user_name'],$_POST['r_password']);

5
Nếu đây được coi là một câu trả lời, nó cần một số lời giải thích. Hãy cập nhật câu trả lời của bạn.
fuxia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.