【WordPress】パスワード保護が機能しないときの対処法
今回はWordPressでパスワード保護が効かないときの対処法について説明します。パスワード保護が効かない原因は以下です。どちらかに当てはまるとパスワード保護ページが表示されない、もしくはパスワードを入力しても画面が真っ白になることがあります。
- カスタムフィールドを使って記事を書いている場合
- パスワード保護で表示されるテキストを変更した場合
パスワード保護が効かないときの対処法
まずカスタムフィールドについて説明します。
カスタムフィールドで書いた記事がパスワード保護されない
Advanced Custom Fieldsを使って記事を作成しているとパスワード保護機能がついていません。管理画面でパスワードを設定しても記事自体は見れてしまいます。
機能させるためには以下のようにハイライト部分を書き加える必要があります。
<?php if( !post_password_required( $post->ID ) ) : ?>
<?php if( get_field('blog_content') ):/*カスタムフィールドで作った記事の入力エリア*/ ?>
<?php the_field('blog_content'); ?>
<?php endif; ?>
<?php else: ?>
<div class="custom_password_aria">
<?php echo get_the_password_form(); ?>
</div>
<?php endif; ?>
これでパスワードを設定しているときは記事は表示されず、入力フォームを表示させることができます。
カスタム投稿などの一覧からパスワード保護ページを除く場合はハイライトの1行を追加しましょう。
$args = array(
'paged' => $paged,
'posts_per_page' => 1,
'no_found_rows' =>false,
'post_type' => 'demo',
'post_status' => 'publish',
'order' => 'DESC',
'orderby' => 'date',
'has_password' => false
);
パスワード保護のテキストを変更したら機能しない
パスワード保護を設定するとデフォルトの表示は以下です。このテキスト部分をfunctions.phpで変更した場合、パスワードを打っても画面が真っ白になってしまったり、404ページに飛ばされることがあります。
原因としては「wp-login.php」までのパスが正しく設定できていないことです。
例えば、WordPressアドレス(URL)とサイトアドレス(URL)が以下のように設定していると過程します。
- WordPressアドレス(URL)…https://hogehoge/ahoaho
- サイトアドレス(URL)…https://hogehoge
この場合、テキスト文字を変更するのであれば以下のように書く必要があります。4行目の部分にwp-login.phpまでのパスにwordpressアドレスを指定すれば解決します。上の例の場合、ahoahoを追加します。
function my_password_form() {
return
'<p>閲覧するには以下にパスワードを入力してください。</p>
<form class="post_password" action="' . home_url() . '/ahoaho/wp-login.php?action=postpass" method="post">
<input class="password_space" name="post_password" type="password" size="24" />
<input class="password_button" type="submit" name="Submit" value="' . esc_attr__("パスワード送信") . '" />
</form>';
}
add_filter('the_password_form', 'my_password_form');
セキュリティプラグインを入れていると機能しない
セキュリティプラグインを入れて管理画面へのログインURLを変更すると機能しません。(パスワード保護のテキストを変更しなければ正しく動きます。)
この場合の対処法は以下の記事を参考にしてみてください。