この実装、面倒なら代行します
以前、「固定ページの下層ページ一覧を取得し、自ページにはクラスを付与して、一覧表示する」の記事で、
会社概要
代表挨拶
会社沿革
のような階層を持つ固定ページがあったときに下層ページの一覧(ここでは「代表挨拶」、「会社沿革」)を出力する方法について、ご紹介しました。
しかし、これは「会社概要」ページがトップページの直下、つまりWordPress上では親ページのないページの下層ページ一覧を出力する方法であって、
english
会社概要(conpany)
代表挨拶(greeting)
会社沿革(history)
のように「english」という親ページを持つ、つまり第2階層に位置する「会社概要」ページの子ページ一覧を出力したい場合には適用できません。
そこでここでは、親ページが第2階層、子ページが第3階層の場合の、子ページ一覧の出力方法についてご紹介します。
まず、「固定ページの下層ページ一覧を取得し、自ページにはクラスを付与して、一覧表示する」とも重複しますが、最上位親ページを取得する関数を以下のように定義します。
functions.php に以下を記述。
function kaiza_get_root_page( $child_id, $root = true ) { if ( $child_id == false ) { return false; } while ( $child_id ) { $page = get_post( $child_id ); $result[] = $page; $child_id = $page->post_parent; } //配列を逆順に(rootを0に) $result = array_reverse( $result ); //rootがtrueの場合0番目(rootページのみ)をセット if ( $root == true ) { $result = $result[0]; } return $result; }
次に、上の関数を使って、第二階層ページを取得するショートコードを作成。
if ( ! function_exists( 'sidebar_third_kasou' ) ){ function sidebar_third_kasou() { global $post; $root_page = kaiza_get_root_page( $post->ID, false ); $thePostID = $root_page[1]->ID; //第2階層ページのID取得 $children = wp_list_pages( 'title_li=&child_of=' . $thePostID . '&echo=0' ); //第3階層ページ取得 $html = ''; if ( $children ) { $html .= $children; } return $html; } add_shortcode( 'sidebar_third_kasou', 'sidebar_third_kasou' ); }
あとは、第三階層の固定ページ一覧を表示したい場所でショートコード
[sidebar_third_kasou]
を呼び出せば解決です。
なお、PHPファイルに記述する場合は
echo do_shortcode('[sidebar_third_kasou]');
と記述しましょう。
現在あなたが利用されているWordPressテーマを活かしたまま、このページの事例を解決できるWordPressテーマを、子テーマとして購入できます。
この子テーマを有効化するだけで、現在お使いのデザインテーマにこの事例解決の機能が自動付与されます。
デザインが入っていないため、一般より格段に低い価格(事例の難易度により200円~1.3万円)です。
※ テーマは買い切りです
※ 自由に改変してお使いいただいて構いません
※ すでに子テーマでサイト運用されている方は、当該子テーマをマージしてください
WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!
100ウェブで手がけた制作・開発案件を一部、ご紹介。
クライアントからご相談いただいた内容とその実装におけるポイント、工期、予算について確認いただけます。
【テレワーク実施中 につきお電話転送中】
コール中1秒程度無音状態になりますがそのままお待ちください。
受付時間
平日 10:00~18:00
メールでのお問い合わせでも
1営業日以内にご連絡いたします。