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 :)
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:
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().
$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
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
wp_set_current_user()sau wp_signon().
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
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);
//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']);