ワードプレスでサイトを作成するときに親子関係のあるページで表示の切り分けをしたいってこと
結構あると思います。
今回は切り分けを行う際のソースを備忘録としてブログにのこしておきますね~
まずはfunction.phpに以下のソースを記述します。
そのままコピペで問題ないです。
/* ------------------------------------------------------------- */ // // 子ページかどうかを判定する関数 // /* ------------------------------------------------------------- */ function is_child( $slug = "" ) { if(is_singular())://投稿ページのとき(固定ページ含) global $post; if ( $post->post_parent ) {//現在のページに親がいる場合 $post_data = get_post($post->post_parent);//親ページの取得 if($slug != "") {//$slugが空じゃないとき if(is_array($slug)) {//$slugが配列のとき for($i = 0 ; $i <= count($slug); $i++) { if($slug[$i] == $post_data->post_name || $slug[$i] == $post_data->ID || $slug[$i] == $post_data->post_title) {//$slugの中のどれかが親ページのスラッグ、ID、投稿タイトルと同じのとき return true; } } } elseif($slug == $post_data->post_name || $slug == $post_data->ID || $slug == $post_data->post_title) {//$slugが配列ではなく、$slugが親ページのスラッグ、ID、投稿タイトルと同じのとき return true; } else { return false; } } else {//親ページは存在するけど$slugが空のとき return true; } }else {//親ページがいない return false; } endif; }
実際に吐き出すテンプレートには以下のような記載をします。
<?php if(is_child()): ?> //ここに子ページの場合の記述 <?php else:?> //ここに親ページの場合の記述 <?php endif; ?>
他にも以下のような書き方もできます。
<?php if(is_page(array('service','company')) || is_child(array('service','company'))): ?> //親ページのスラッグがserviceまたはcompany、または、子ページの親のスラッグがserviceまたはcompanyの場合の処理 <?php else:?> //それ以外 <?php endif; ?>
みなさんもぜひ試してみて下さい!