WordPress パスワード保護ページの改変

ブログの記事で非公開のページはパスワードで保護するわけだが、デフォルトでは何故保護しているのかわからないので変更してみました。
(1)サーバにログインし、wp-content/themes/テーマ名/functions.php  のパーミッションが
-rw-r–r– 1 sigh staff 17751 Jun 22 13:44 functions.php
つまり 644 になっているから 777 にする。
# chmod 777 functions.php ですね。
-rwxrwxrwx 1 sigh staff 17751 Jun 22 13:44 functions.php
となったことを確認する。
# cp functions.php functions.php20170627 とかにしてバックアップを作っておくこと。
(2)ブログにログインし 外観 テーマの編集 から テーマの関数(functions.php) を開く。
下の方に

のように「ファイルを更新」ボタンが出現することを確認する。
(3)   と保護した記事のタイトルに付く「保護中:」という文字を削除する。

// 保護中の文字を削除する
add_filter('protected_title_format', 'remove_protected');
function remove_protected($title) {
       return '%s';
}

をこのfunctions.php の最後の「endif;」の下に加える。
(4) 表示テキスト「このコンテンツはパスワードで保護されています。閲覧するには以下にパスワードを入力してください。」を変更する。
パスワードで保護している意味を説明したほうが親切でしょ。

// パスワード保護の理由を変更する
function my_password_form() {
  return
    '<p>この記事は管理人のメモなので非公開にしています。<p>
    <form class="post_password" action="' . home_url() . '/wp-login.php?action=postpass" method="post">
    <input name="post_password" type="password" size="24" />
    <input type="submit" name="Submit" value="' . esc_attr__("パスワード送信") . '" />
    </form>';
}
add_filter('the_password_form', 'my_password_form');

「この記事は管理人のメモなので非公開にしています。」としたけど、好きな文字列に置き換える。先程同様にfunctions.php の最後に加える。
(4)Cookieの有効期限を変更
デフォルトではCookieの有効期限は10日間らしいので1日だけにする。

// Cookieの有効期限を1日にする
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() +DAY_IN_SECONDS, COOKIEPATH );
    wp_safe_redirect( wp_get_referer() );
    exit();
}
add_action( 'login_form_postpass', 'custom_postpass_time' );

これを同様に最後に書き加える。
DAY_IN_SECONDS が1日のこと
HOUR_IN_SECONDS にすれば1時間
600 のような数字にすれば秒単位の時間になる。600は10分ですね。
(5)「ファイルを更新」ボタンをクリックし、問題なければパーミッションを元に戻しておしまい。
# chmod 644 functions.php ですね。
エラーがあると。ページが見えなくなっちゃったりするから、サーバに戻ってバックアップから復元してやり直す。
バックアップを削除してもいいですけど、間違えがあったらまずいのでしばらくは保存しておきましょ。
WordPres Theme TCD というブログの「WordPressのパスワード保護ページをカスタマイズする方法」を参照しましたというか、ほとんどそのままです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です