ホーム > ブログ > CMSTips > 特定の固定ページの子ページ一覧を取得する関数

特定の固定ページの子ページ一覧を取得する関数

2015.11.20

銀ねこです。

WordPressで毎回特定の固定ページの子ページの一覧取得するのが面倒だったので関数を作ってみました。

よく使うコードは関数にしておくと便利

慣れないうちはWordPress使ってるとコードが煩雑になってイライラします。
テンプレートにはできるだけphpを書かず、美しくしたい。

wp_list_pages()というテンプレートタグもあるんですけど、微妙に痒いところに手が届かなかったので自分で関数を作ってみました。

IDでもスラッグでも子ページの一覧は取得できるようにしてます。
もし、親ページそのものが存在しない場合は、一覧そのものが表示されません。

  1. function pageList($parent = ''){
  2. if(get_page_by_path($parent)){
  3. if(ctype_digit($parent) === false){ //スラッグの場合
  4. $get_page = get_page_by_path($parent);
  5. $parent = $get_page->ID;
  6. }
  7. global $post;
  8. $args = array(
  9. 'post_type' => 'page',
  10. 'sort_order' => 'asc',
  11. 'sort_column' => 'ID',
  12. 'posts_per_page' => -1,
  13. 'parent' => $parent
  14. );
  15. $myposts = get_pages( $args );
  16. if($myposts){
  17. foreach( $myposts as $post ) : setup_postdata($post);
  18. echo "<li><a href='" . get_permalink( $post->ID ) . "'>" . $post->post_title . "</a></li>\n";
  19. endforeach;
  20. }
  21. }
  22. }

さらにカレントページの場合はアクティブになるようにしようと思います。後日改良。

この記事のタグ