一般的なテーマを利用している場合は投稿画面の公開情報でパスワード保護をするだけで簡単に設定できます。
ただ、特殊なテーマだったり特定のプラグインを導入している場合パスワード保護をしていてもページが表示されてしまう場合があります。
今回はsingle.php
に数行追加してパスワードページごと非表示にする方法。
一番上の
<?php
get_header();
?>
の次の行に
<?php if( !post_password_required( $post->ID ) ) : ?>
一番下の
<?php
get_footer();
?>
のすぐ上に
<?php else: ?>
<?php echo get_the_password_form(); ?>
<?php endif; ?>
これだけ!
後はパスワード設定したページは一覧からも見えなくしたい&パスワード入力のテキストを変えたいという場合は、functions.php
に以下を追加。
/* PASS */
function my_password_form() {
return
'<center><p>パスワードを入力してください</p>
<form class="post_password" action="' . home_url() . '/wp-login.php?action=postpass" method="post">
<input name="post_password" type="password" size="22" />
<input type="submit" name="Submit" value="' . esc_attr__("パスワード送信") . '" />
</form></center>';
}
add_filter('the_password_form', 'my_password_form');
function customize_main_query ( $query ) {
if ( ! is_admin() || $query->is_main_query() ) {
if ( $query->is_archive() ) {
$query->set( 'has_password', false );
}
}
}
add_action( 'pre_get_posts', 'customize_main_query' );