WordPress

【WordPress】パスワード保護ページのパスワード入力が必要な期間を短く変更する方法。デフォルトの10日間→60分間に

wordpressでhtml内でphpを動かす

ワードプレスでは記事毎にパスワードを設定することが可能です。

正しいパスワードを入力するまで内容を表示させないという仕様で、資料のダウンロードページ等使い勝手がよい機能です。

ただ、デフォルトだと1度正しいパスワードを入力してから10日もの間、再入力を要求されません。長すぎじゃないですか?共有PCなんかだと不都合なケースもありますよね。

ということで、この期間を10日→60分に変更しようというカスタマイズです。

パスワード保護ページのカスタマイズは当ページの他にもありますのでご参考に

パスワード保存期間の変更(functions.php)

functions.phpファイルに下記のコードを記載すればパスワード再入力までの期間を60分間にすることができます。

function.phpファイルはページ表示時に読み込まれるプログラムですので記述を誤るとサイトが真っ白になるなど重大なエラーになることがあります。その場合はFTPツールでファイルを直接操作してください。編集はバックアップを取りながら自己責任でお願いします。

/* パスワード保護ページのパスワード保存時間を60分に変更 */
function custom_postpass_time() {
    require_once ABSPATH . 'wp-includes/class-phpass.php';
    $hasher = new PasswordHash( 8, true );
    setcookie( 'wp-postpass_' . COOKIEHASH, $hasher->HashPassword( wp_unslash( $_POST['post_password'] ) ), time() + HOUR_IN_SECONDS, COOKIEPATH );
    wp_safe_redirect( wp_get_referer() );
    exit();
}
add_action( 'login_form_postpass', 'custom_postpass_time' );

5行目の“HOUR_IN_SECONDS”が60分間を表しています。ここを変更すればパスワード保存期間を60分以外にも変更可能です。

  • MINUTE_IN_SECONDS =1分
  • HOUR_IN_SECONDS =60分
  • DAY_IN_SECONDS =1日
  • WEEK_IN_SECONDS =7日間
  • MONTH_IN_SECONDS =30日間
  • YEAR_IN_SECONDS =1年

実際に設定するとしたら60分か1日ですかね。
(1分は動作テストの時に重宝しました)

まとめ

入力されたパスワードはクッキーに保存されるので、クッキーの保存期間を変更しています。

同カテゴリにあるパスワード保護ページのカスタマイズ方法もご参考に

ではまた!