web-dev-qa-db-fra.com

Définir le délai de session pour les publications protégées par mot de passe

J'ai créé une série d'articles et de pages protégés par mot de passe sur mon site Web à l'aide du paramètre de visibilité intégré. Ils utilisent tous le même mot de passe, afin que l'utilisateur puisse les visualiser après avoir saisi le mot de passe une fois.

Le problème: J'ai besoin que la session expire au bout d'une heure. J'ai essayé d'utiliser ce code dans mon fichier functions.php.

add_action( 'wp', 'post_pw_sess_expire' );
    function post_pw_sess_expire() {
    if ( isset( $_COOKIE['wp-postpass_' . COOKIEHASH] ) )
    // Setting a time of 0 in setcookie() forces the cookie to expire with the session
    setcookie('wp-postpass_' . COOKIEHASH, '', 0, COOKIEPATH);
}

Le cache est effacé avec succès, mais je voudrais prolonger le délai plutôt que d’expirer immédiatement. Toute aide serait grandement appréciée!

3
Susan

La raison est quand vous exécutez ce code

setcookie('wp-postpass_' . COOKIEHASH, '', 0, COOKIEPATH);

Il réinitialisera votre cookie de mot de passe post à blanc '', il ne fonctionnera donc qu'une fois. Pour résoudre ce problème, vous devez attribuer le cookie d'origine et prolonger le délai d'attente, comme ceci

setcookie('wp-postpass_' . COOKIEHASH, $_COOKIE['wp-postpass_' . COOKIEHASH], time() + 60 * 5, COOKIEPATH);

J'espère que cette aide

3
Phan Chuong

Il vous suffit de vous accrocher au filtre comme ceci et de remplacer 0 par un calcul de temps, tel que time() + 60

function set_cookie_expire () {
    echo 0;
}
add_filter('post_password_expires', 'set_cookie_expire');
2
daerentis