WordPressで固定ページでテンプレートを使うとパスワード保護が効かないことへの対処方法

WordPressでは、固定ページでテンプレートを使うとパスワード保護が効かなくなることがあります。

なぜパスワード保護が効かなくなるかといえば、パスワード保護を読み込むソースが、the_contentsが読み込んでいるファイル「wp-includes/post-template.php 」の中にあるからです。

つまり、the_contentsを使用しないと、パスワード保護は読み込まれません。

なので、もしパスワード保護を有効にしたい場合は、テンプレートファイル側でthe_contentsを使用して、固定ページに記載された記事を読み込むようにすることで解決します。

具体的には下記のようになります。

【対応前(パスワード保護が効かない)】
page-◯◯.php(テンプレートファイル)のソース

<div id="wrapper">
<div class="contents">
あああああああああああ
</div>
</div>
※全てをテンプレート側に書いているため、the_contentsの記述がない。

【対応後(パスワード保護が効く)】
page-◯◯.php(テンプレートファイル)のソース

<div id="wrapper">
<?php while ( have_posts() ) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; // end of the loop. ?>
</div>

固定ページの記事中に下記を記載

<div class="contents">
あああああああああああ
</div>
※テンプレート側に全てのソースを書くのではなく、一部でも固定ページの内容を読み込むように指定する。

以上です。

もしテンプレートファイルを使用してパスワード保護が効かなくなったときには、ぜひお試しください。