web-dev-qa-db-fra.com

Comment définir différents cookies pour les utilisateurs admin connectés et les utilisateurs non admin connectés?

Je souhaite identifier les utilisateurs administrateurs et les utilisateurs non-administrateurs (mais connectés) à l'aide de cookies. J'ai besoin de cette fonctionnalité car j'utilise Hyper Cache (qui utilise des cookies pour identifier les personnes qui envoient des pages en cache): je souhaite proposer une page en cache à tous les utilisateurs non connectés et à tous les utilisateurs connectés mais non-administrateurs. Les utilisateurs admin connectés ne recevront pas les pages en cache.

2
Francesco

Vous pouvez utiliser current_user_can() pour détecter le type d’utilisateur connecté, le cas échéant, puis utilisez setcookie() et $_COOKIE pour tester et définir les cookies nécessaires.

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');

Ceci est un exemple extrêmement basique. Il y a beaucoup de détails dans la gestion des cookies, vous pouvez donc vous renseigner un peu sur les chemins d'accès aux cookies, les domaines et leur expiration.

Vous pouvez également faire mieux de définir simplement le cookie avec le hook approprié au lieu de vous fier aux capacités de l'utilisateur avec l'action admin_init :

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