設定した条件にて、ウィジェットの出力を制御できる神プラグインが、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
↑ 実際に入力している様子のスクリーンショット。