WordPress PR

WordPressパスワード保護画面をカスタマイズ

記事内に商品プロモーションを含む場合があります

WordPressの見せたくない投稿記事はパスワード保護出来ますが、そのパスワード保護画面をカスタマイズする方法をご紹介します。

編集するファイル「functions.php」の場所

WordPressのテーマフォルダ

/wp-content/themes/テーマフォルダ/functions.php

ファイルを編集します。

「保護中」文字を非表示

パスワード保護した投稿記事タイトルに「保護中」という文字が表示されるのでそれを非表示にします。

「保護中」表示イメージ

functions.phpファイルの最下部に以下の内容を記述します。

add_filter( 'mwform_validation_mw-wp-form-133', 'my_validation_rule', 10, 3 );

add_filter('protected_title_format', 'remove_protected');
function remove_protected($title) {
       return '%s';
}

以下の様に「保護中」の文字が非表示になります。

「保護中」文字を非表示イメージ

パスワード保護画面のテキストとフォームをカスタマイズ

次に、パスワード保護画面(投稿記事タイトル下)のテキストとフォームをカスタマイズします。
functions.phpファイルの最下部に以下の内容を記述します。

function my_password_form() {
  return
    '<p style="padding:40px 0 0 0;">非公開の情報です。お問い合わせください。</p><p style="padding:35px 0 20px 0;">パスワードを入力して「送信」ボタンをクリックして下さい。<br>(1日経つと再度パスワードを入力する必要があります)<p>
    <form class="post_password" action="' . home_url() . '/wp-login.php?action=postpass" method="post">
    <input name="post_password" type="password" size="24" style="border:solid 1px #cccccc; padding:6px; background-color:#ffffff;" />
    <input type="submit" name="Submit" value="' . esc_attr__("送信") . '" style="border:solid 1px #cccccc; padding:6px; margin:0 0 0 6px;" />
    </form>';
}
add_filter('the_password_form', 'my_password_form');

以下の様にパスワード保護画面がカスタマイズ出来ます。

パスワード保護画面のテキストとフォームをカスタマイズイメージ

パスワード入力後の閲覧期間(cookie)変更

パスワード保護画面でパスワード入力後の閲覧期間はデフォルトで10日間になってます。それを1日に変更してみます。
functions.phpファイルの最下部に以下の内容を記述します。

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日間に設定しました。この箇所で閲覧期間(cookie)を変更します。
1時間にしたい場合は「HOUR_IN_SECONDS」と記述します。

 
※流用される場合は自己責任でお願いします。