Widget Logic 【WordPree】is_subpage() で子ページに属しているかを 一括制御する

  • ブックマーク

設定した条件にて、ウィジェットの出力を制御できる神プラグインが、Widget Logic

固定ページの子ページに属している場合、一つ一つのページIDを設定せずに、「親ページID」を指定して一括で制御する手順でハマったので、メモ。

functions.phpで関数を作る

子ページかどうかを判定する関数が、標準で準備されていないので、is_subpage()関数を作る。

functions.php に以下のコードを追記する。

function is_subpage() {
  global $post;
  if (is_page() && $post->post_parent){
    $parentID = $post->post_parent;
    return $parentID;
  } else {
    return false;
  };
};

(コードはこちらの記事こちらの記事を参考にさせていただきました。感謝)

ウィジェットの条件分岐を設定する

ついつい、いつもの書き方をやってしまうが、これらの書き方では、判定してくれない。(上の追記したコードが、引数を取らない形だから?)

ダメな例

is_subpage(432)

is_subpage(‘slug’)

!is_subpage(264)

この点にハマった。参考になったのがこちらの記事

正しくは、こちら。この場合、固定ページのID 13832 の親ページを持つ子ページが、Ture(真)となるので、その子ページのみ表示される。

is_subpage() === 13832

一方、その子ページに属している固定ページだけ表示を除外したい場合はこちら。!マークの位置に注意。PHPの比較演算子の書き方になる。

is_subpage() !== 13832

↑ 実際に入力している様子のスクリーンショット。

Youtube

  • ブックマーク

この記事を書いた人

情報発信ナビゲーター 大東 信仁

情報発信ナビゲーター / 博士課程中退 / ニックネーム : ものくろ / ブロガー / WordPressが得意 / orz レイアウト開発者 / 株式会社 あみだす 代表取締役