WordPressでパスワード制限をかけたページが公開されてしまう場合の対処法
WordPressではページごとにパスワード制限をかけてページを非公開にすることができます。
投稿画面の「公開状態」から「パスワード保護」を選択するとパスワードの入力欄が表示されます。
この機能でパスワード保護をするとページにアクセスしても、下記のような状態になりパスワードの入力を求められます。
例えば会員専用ページや限定公開の記事を作成する際に便利ですね。
パスワード制限が有効にならないときはテンプレートが原因
しかし、固定ページでは非公開にしたはずのページが公開されてしまう場合があります。
これは固定ページのテンプレートを使っているときに発生します。
このようにWordPressの固定ページではテンプレートを選択することができます。
しかし、デフォルトテンプレート以外にパスワード保護をかけた場合、パスワード保護が有効にならないことがあります。
今回は固定ページのテンプレートを編集して、パスワード保護を有効にする方法を解説します。
「子テーマ」で編集しないと、テーマのバージョンアップをすると今回の編集が消えてしまいます。
WordPress管理画面でファイルを確認する
まず「外観」→「テーマの編集」からテーマファイルを確認します。
たくさんのファイルがありますが、固定ページのデフォルトテンプレートファイルは「個別投稿ページ(page.php)」というファイル名です。使用しているテーマよっては、他に「page-abc.php」「page-123.php」など複数のテンプレートを用意している場合があります。
この場合はパスワード制限をかけたいページのテンプレートファイルを探してください。
使用中のテーマによってテンプレートの詳細は異なりますので、「この部分を変える」と断定することはできません。
例えばデフォルトテンプレートの本文入力箇所は次のようなコードで書かれています。
1 2 3 4 5 |
<?php if(have_posts()): while(have_posts()): the_post(); ?> <?php the_content(); ?> <?php endwhile; endif; ?> |
固定ページの入力が反映されるのが「<?php the_content(); ?>」というコードで、その前後のコードは本文入力箇所の「始まり」と「終わり」を意味しています。
「<?php the_content(); ?>」というコードはWordPressのタグの一つで、このコードが使われていればパスワード保護は有効になります。
オリジナルのテーマやカスタマイズしたテンプレートはこの部分の記述が異なるので、パスワード保護が機能しなかったということです。固定ページテンプレートをよく確認してください。
テンプレートと本文入力箇所の確認ができれば、FTPでファイルをダウンロードして編集します。
FTPでファイルをダウンロードして編集
パスワード保護を有効にしたいテンプレートをFTPソフトでダウンロードします。
ダウンロードしたテンプレートをテキストエディタで開き、先ほど確認した固定ページの本文箇所を編集します。
下記のコードを記載してください。
1 2 3 4 5 6 7 8 9 10 |
<?php if( !post_password_required( $post->ID ) ) : ?> //パスワードが不要、あるいはパスワードが正しいときに表示する内容を記述する <?php else: ?> //パスワードが必要あるいはパスワードが間違っているときに表示する内容を記述する <?php echo get_the_password_form(); ?> <?php endif; ?> |
終わりに
これで固定ページテンプレートでもパスワード保護が有効になります。
カスタマイズしたテンプレートを使っているときなど、パスワード保護が機能しない場合に参考にしてください。