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などで元ページへ遷移させる

などの対応が必要です。

ブログ一覧へ