web-dev-qa-db-ja.com

ユーザーがサイトからログアウトしたときにパスワード保護された投稿のクッキーを削除する方法

パスワードで保護された投稿にアクセスした後にユーザーがサイトからログアウトしたときに、パスワードで保護された投稿に設定されているすべてのCookieを削除したいと思いました。

これを行う機能はありますか?

1
Ankush Kalia

ポストパスワードcookieは次のように設定されます。

setcookie( 
    'wp-postpass_' . COOKIEHASH, 
     $hasher->HashPassword( wp_unslash( $_POST['post_password'] ) ), 
     $expire, 
     COOKIEPATH, 
     COOKIE_DOMAIN, 
     $secure 
);

wp-login.phpファイルにあります。

その後、wp_clear_auth_cookie()関数内でclear_auth_cookieフックを使用して、ログアウト時にそれを消去できます。

/**
 * Clear the Post Password Cookie on logout.
 *
 * @link http://wordpress.stackexchange.com/a/198890/26350
 */
add_action( 'clear_auth_cookie', function()
{    
    setcookie(  
       'wp-postpass_' . COOKIEHASH, 
       '', 
       time() - YEAR_IN_SECONDS, 
       COOKIEPATH, 
       COOKIE_DOMAIN 
    );
});
1
birgire