web-dev-qa-db-ja.com

ログインした管理者ユーザーと管理者以外のユーザーに異なるCookieを設定するにはどうすればいいですか?

管理者と管理者以外(ただしログイン)のユーザーをCookieで識別したいのですが。 Hyper Cache(キャッシュを使用してページを送信するユーザーを識別するためにCookieを使用する)を使用しているため、この機能が必要です。ログインした管理ユーザーはキャッシュされたページを取得しません。

2
Francesco

current_user_can() を使用して、ログインしているユーザーのタイプを検出できます(存在する場合)。 setcookie() および $_COOKIEを使用します。 必要なクッキーをテストして設定します。

function wpse_74742_stop_cache_cookie() {
    if (current_user_can('admin')) {
        if (empty($_COOKIE['disable_cache'])) {
            setcookie('disable_cache', 1);
        }
    }
}
add_action('init', 'wpse_74742_stop_cache_cookie');

これは非常に基本的な例です。 Cookie管理には多くの詳細があるので、Cookieのパス、ドメイン、および有効期限について少し読み上げることをお勧めします。

admin_init アクションのユーザー機能に頼るのではなく、適切なフックを使って単純にcookieを設定するほうがよいかもしれません。

function wpse_74742_disable_admin_cache() {
    if (empty($_COOKIE['disable_cache'])) {
        setcookie('disable_cache', 1);
    }
}
add_action('admin_init', 'wpse_74742_disable_admin_cache');
2
totels