2015-10-21 110 views
2

嗨,我是新來的wordpress。在註銷之前和管理員登錄後設置cookie

我已經研究了很多,但沒有成功。我想在登錄後管理和退出自定義值之前設置cookie的值NULL。

所以我把下面的代碼在WP-包括/ puggable.php =>在功能wp_set_auth_cookie

setcookie("cookieName", '', time() + (1 * 60) , true);

echo "<script>console.log('Cookie must set null')</script>";

但是沒有成功,即使在登錄註銷後cookie值仍然保持不變。

回答

7

從不編輯WordPress的核心文件!如果您有一天更新Wordpress(並且想要解決安全問題),所有修改都將丟失。

您需要做的是使用wp_loginwp_logout操作。您將這兩個操作功能都附加在add_action上,以便在這些事件中觸發它們。這些功能和add_action調用發生在您的主題的functions.php文件中。作爲diziaq在他的回答中指出,你用錯setcookie功能

add_action('wp_login', 'add_custom_cookie_admin'); 
function add_custom_cookie_admin() { 
    if(is_admin()) { 
    setcookie('your_cookie_name', 'cookie value', time() + 86400, '/'); // expire in a day 
    } 
} 

注:

所以裏面的functions.php,加上這(僅適用於管理員)設置登錄cookie的。

,並刪除了日誌餅乾出來:

add_action('wp_logout', 'remove_custom_cookie_admin'); 
function remove_custom_cookie_admin() { 
    setcookie('your_cookie_name', '', time() - 3600); 
} 

同diziaq指出的那樣,你需要刪除cookie的 - 你不能將其設置爲NULL

+0

我無法使用上面的添加功能在WP 4.6.1上設置cookie。我刪除了if is_admin條件,並按預期工作。 據我在測試中發現,is_admin檢查是不必要的;至少爲了我的目的。自定義cookie不會被設置,除非登錄成功。 – mingala

+0

@mingala此答案中的'is_admin'檢查是針對此問題範圍內的特定目的 - OP僅嘗試檢測管理員登錄操作。如果您需要捕獲每個使用角色的登錄信息,請刪除條件。 – vard

2

請閱讀文檔setcookie函數 - 你用它錯了。第四個參數必須是string(但您傳遞的是bool)。

  1. 設置cookie:

    setcookie("cookieName", "cookieValue", time() + 600, '/');

  2. 要刪除對設定有效期限你有餅乾過去

    setcookie("cookieName", "anyValue", time() - 1, '/');

你打算成立null到一個cookie是無法訪問,因爲根據定義一個cookie的值是一個字符串。它可以是空的,但不能是未定義的或爲空。