web-dev-qa-db-ja.com

パスワードで保護された投稿のセッション制限時間を設定する

内蔵の表示設定を使用して、一連の投稿とページを自分のWebサイトでパスワードで保護しました。それらはすべて同じパスワードを使用するので、ユーザーは一度パスワードを入力した後それらすべてを見ることができます。

問題: 1時間後にセッションがタイムアウトする必要があります。私は私の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);
}

キャッシュは正常にクリアされますが、すぐにセッションを期限切れにするのではなく、時間を延長したいと思います。任意の助けは大歓迎です!

3
Susan

その理由はあなたがこのコードを実行したときです

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

これはあなたの投稿パスワードのクッキーを空白の ''にリセットするので、一度だけ動作します。

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

この助けを願っています

3
Phan Chuong

このようにフィルタにフックして、time() + 60のように0を時間計算に置き換えるだけです。

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