WordPressでスラッグ名からそのページのIDを取得する方法と、
親ページのIDをスラッグから取得し、その子ページを一覧表示する方法を紹介します。
スラッグからページIDの取得
まずは特定の固定ページのスラッグからIDを取得する方法です。
get_page_by_path()
1 2 3 4 5 6 7 8 9 10 11 | <?php $page_id = get_page_by_path('スラッグ'); // ここで一度 var_dump var_dump($page_id); $page_id = $pageID->ID; // IDを格納 echo $page_id // 出力 ?> |
get_page_by_path()でスラッグを指定することで、その固定ページの情報を取得することができます。
上記では$page_idという変数にget_page_by_path(‘スラッグ’)で取得した固定ページの情報を格納しています。
var_dump($page_id); とすることで、中身を確認できます。
最後に変数をechoしてあげるとIDを取得することができました!
この方法は親ページ・子ページ関係なく固定ページのIDを取得できます。
子ページを一覧で表示する
上記の固定ページのIDを取得する方法を用いて、親ページのIDを取得してその子ページたちを一覧で表示する方法をご紹介します。
1 2 3 4 5 6 | <?php $page_id = get_page_by_path("親ページのスラッグを指定"); $page_id = $page_id->ID; ?> |
まずは先ほどと同じようにIDを取得。
WP_QueryでIDを指定してその子ページを取得
IDを取得できたらWP_queryを使って子ページの一覧を取得します。
1 2 3 4 5 6 7 8 9 10 11 | <ul> <?php $page_list = new WP_Query([ 'post_type' =>'page', 'post_parent' => $page_id, 'posts_per_page' => 4 ]); if ( $page_list->have_posts() ): while ( $page_list->have_posts() ) : $page_list->the_post(); ?> <li><?php the_title(); ?></li> <?php endwhile; endif; ?> </ul> |
WP_Queryには「post_parent」というパラメータが用意されています。
「post_parent」は固定ページのIDを指定し、指定した子ページを返します。
つまり、上記のコードで ‘post_parent’ => $page_id と指定することで、親ページのIDを指定することになるのでその子ページを返します。
これで親ページの子ページを取得することができました。
まとめ
WP_Queryで親ページのIDを直接指定して取得することもできます。
ただし、コードを見たときにページIDが書かれていても何のページかも直感的にわかりづらいので、個人的にはページのslugを指定してからIDを取得し変数で呼び出す方がいいのかなと思います。