WordPressで1つの固定ページに設定したパスワードを共通して使用する方法
複数の固定ページにパスワードを設定したい場合に、1つの固定ページで設定したパスワードを共通して使用できる方法を紹介します。
この方法を使用すれば親ページのみにパスワードを設定すれば全ての子ページにおいても同様のパスワードを設定することができます。
<?php
//342はパスワードを設定した固定ページのID
if (!is_page(342)) {
$args = array(
'page_id' => 342,
);
$the_query = new WP_Query($args);
if ($the_query->have_posts()) :
while ($the_query->have_posts()) : $the_query->the_post();
//パスワードが入力されていなければパスワード設定ページへリダイレクト
if (post_password_required($post->ID)) {
header('Location: /342');
exit;
}
endwhile;
endif;
wp_reset_postdata();
}
?>
目次(読みたい所をクリック!!)
コード解説
上記のコードは共通のパスワードを設定した固定ページを最初に読み込むことでパスワードが入力されているかどうかを判定し、入力されていなければ入力ページへリダイレクトさせています。
このコードを最初に読み込むテンプレートを作成し、パスワードを共通して使用したいページに設定します。
問題点
この方法の問題点はパスワード入力後にパスワードを設定した親ページが開かれてしまうという点です。
その場合は12行目を変更して
- リダイレクトではなく、親ページを出力するように変更する
- リファラーを取得しJavaScriptなどで元ページへ遷移させる
などの対応が必要です。