我正在嘗試創建訂閱者自動登錄的功能,並附加到網站URL上。我使用ACF將密鑰文本添加到用戶詳細信息頁面,密鑰存儲在_usermeta表中。我可以自動登錄。但是,當我訪問登錄頁面之外的頁面時,基於$ current_user對象的回顯,登錄名似乎更改爲我的登錄名。WP使用查詢字符串鍵自動登錄
爲了測試,我使用了一個註銷的Safari瀏覽器(我從不使用)。在查詢字符串中使用具有特殊鍵的URL登錄用戶,並在我回顯這些值時顯示正確的用戶名和ID。
查詢字符串看起來像:
http://website.com/?k=ABCD1234
這裏是我的代碼:
function auto_login() {
\t $user_key = $_GET['k'];
\t global $wpdb;
\t $user_id = $wpdb->get_var(" SELECT user_id FROM wp_usermeta WHERE meta_value = '".$user_key."' ");
\t wp_set_current_user($user_id);
\t wp_set_auth_cookie($user_id);
\t global $current_user;
\t $user = "";
\t get_currentuserinfo();
\t $user = $current_user->user_login;
\t //echo $user;
}
add_action('init', 'auto_login');
感覺就像cookie不會被置位(數據/狀態沒有跨頁面維護)。有什麼想法發生在這裏?謝謝!
查看pluggable.php時,似乎可能與$ current_user發生衝突,因爲wp_set_current_user也會使用它。但是,當我將全局$ current_user行刪除到// echo $ user行時,我仍然得到相同的行爲:我可以使用包含查詢字符串k = value的URL回顯正確的用戶標識,但單擊第二頁開關即使我沒有登錄,我也刪除了與此域名相關的所有Cookie。 – FredHead