プラグインは使いません。 ただ、デフォルトの状態だとタイトルの先頭に「保護中」が表示されるのでそのあたりのカスタマイズする方法もここにメモ。
投稿記事にパスワードを設定
閲覧制限は、新しい記事にも適用できますし、前に書いたものにも制限をかけることができます。
設定箇所
投稿画面の右端にある「公開」より設定します。

「公開」の中にある 「公開状態」の編集をクリック。
その中の「パスワード保護」にチェックを入れて、お好きなパスワードを設定し、OKをクリックすれば設定は完了です。
プレビューで見てみる
ここではまだ公開にはしておらず、プレビューでどのようになっているか見てみた図です。

この時点でいくらか文章を書いているのですが、図のようにパスワードを入力するよう促され、ボックスが表示されている状態が確認できます。
このままで良ければ、公開ボタンを押せば投稿記事にパスワードを設定して閲覧制限の設定はすべて完了です。
タイトルの「保護中:」をカスタマイズ
タイトルの「保護中:」を消す
保護中の文字を消したい場合は、function.phpに以下を記述します。
1 2 3 4 5 |
// 保護中の文字を消す ----------------------------------------------------// add_filter('protected_title_format', 'remove_protected'); function remove_protected($title) { return '%s'; } |
タイトルの「保護中:」を違う文言に変更する

保護中の文字を消す場合と同じで、function.phpに以下を記述します。 「保護中:」の文言を「ユーザー限定:」変更
1 2 3 4 5 6 |
// 「保護中:」の文言を「ユーザー限定:」変更 ------------------------------------------// function change_hoge_title($title) { $title = str_replace('保護中: ', 'ユーザー限定:', $title); return $title; } add_filter( 'the_title', 'change_hoge_title' ); |
投稿記事のパスワード画面をカスタマイズ

上記の図のように投稿記事のパスワード画面をカスタマイズする場合は、function.phpに以下を記述します。
1 2 3 4 5 6 7 8 9 10 11 |
// 投稿記事のパスワード画面をカスタマイズ--------------------------------// function custom_password_form() { global $post; $label = 'pwbox-'.( empty( $post->ID ) ? rand() : $post->ID ); $o = '<form action="' . esc_url( site_url( 'wp-login.php?action=postpass', 'login_post' ) ) . '" method="post"> <p>ここに変更した文章を書いていくよ!<br />ここに変更した文章を書いていくよ!</p> <label for="' . $label . '">' . __( "パスワードを入力!" ) . ' </label><input name="post_password" id="' . $label . '" type="password" maxlength="20" /> <input type="submit" name="Submit" value="' . esc_attr__( "パスワード送信" ) . '" /> </form>'; return $o; } add_filter( 'the_password_form', 'custom_password_form' ); |
抜粋をカスタマイズ
このブログでは抜粋はexcerpt
を使っています。 そのような場合の抜粋部分のカスタマイズ方法。
抜粋を表示させる

抜粋として書いたものをそのまま表示させるには、function.phpに以下を記述します。
1 2 3 4 5 6 7 8 9 10 |
// 抜粋を表示させる ----------------------------------------------------// function enable_excerpt_password_protected_post( $output ) { global $post; if ( post_password_required( $post ) && has_excerpt() ) { $output = $post->post_excerpt; } return $output; } add_filter( 'the_excerpt', 'enable_excerpt_password_protected_post', 0 ); |
抜粋にもフォームを表示させる

抜粋にもフォームを表示させるには、function.phpに以下を記述します。
1 2 3 4 5 6 7 |
// 抜粋にもフォームを表示させる ----------------------------------------------------// function my_excerpt_password_form( $excerpt ) { if ( post_password_required() ) $excerpt = get_the_password_form(); return $excerpt; } add_filter( 'the_excerpt', 'my_excerpt_password_form' ); |
抜粋の文言を変更する

抜粋の文言を変更するには、function.phpに以下を記述します。
1 2 3 4 5 6 7 |
// 抜粋の文言を変更 ----------------------------------------------------// function my_excerpt_protected( $excerpt ) { if ( post_password_required() ) $excerpt = '<p>[ここに抜粋を書く。変更されているかな?]</p>'; return $excerpt; } add_filter( 'the_excerpt', 'my_excerpt_protected' ); |
パスワードの保持期間を変更する
パスワードをcookieに保持する期限が、デフォルトだと10日。 その保持期間を変更する方法です。
function.phpに以下を記述します。 下記のものはパスワード保持期限を1時間に設定。
1 2 3 4 5 6 7 8 |
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' ); |
投稿記事にパスワードを設定して閲覧制限をかける方法自体はとっても簡単なのですが、そのままだと初めてそのページを見る人には内容が全くわからない状態になってしいます。
使い方や目的によって違うとは思いますが、カスタマイズしたほうが初めて見てくださる方にもわかりやすくなるのではないかと思います。