- ベストアンサー
WordPressで孫ページ一覧を取得する方法
- WordPressで孫ページ一覧を取得する方法をご教授ください。
- 子ページ一覧ではなく、孫ページ一覧を取得するためのコードを教えてください。
- 具体的な方法や関数について詳しく教えていただけると助かります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
$parentId = get_the_ID(); $args = 'posts_per_page=-1&post_type=page&orderby=menu_order&post_parent='.$parentId; ここまでが、出力するページの条件を決める部分で、これ以降は、どのように出力するかを決めています。 この書き方だと、出力するページの条件を、post_parentで「$parentIDを親に持つページ」に設定しています。 同様に、孫ページを出力する場合は、子ページでループ処理をさせる中で、さらにループ処理をさせます。 その前に、query_postsは使わない方がいいかもしれません。 処理にものすごく無駄ができるので、パフォーマンス低下の原因になります。 なので、代わりにget_postsを使って、少し書き換えてみます。 <?php $parentId = get_the_ID( $post->ID ); $args = array ( 'posts_per_page' => -1, 'post_type' => 'page', 'orderby' => 'menu_order' ); $parentArgs = $args; $parentArgs += array ( 'post_parent' => $parentId ); $parentPosts = get_posts ( $args ); foreach ( $parentPosts as $valPosts ) { $childID = get_the_ID ( $valPosts->ID ); $valArgs = $args; $valArgs += array ( 'post_parent' => $childID; ); $childPosts = get_posts ( $valArgs ); foreach ( $childPosts as $valPost ) : ?> <div class="child-box"> <a href="<?php the_permalink(); ?>"><img src="<?php echo wp_get_attachment_url( get_post_thumbnail_id() ); ?>" width="190" alt=""></a> <p class="title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> <p>価格:<span class="price"><?php $selling_price = get_field('selling_price'); echo $selling_price."円"; ?></span></p> </div> <?php endforeach; } ?> すべての子ページに孫ページが存在して、 ページが取得できない場合を全く想定していない書き方です。 その辺りは適当に加えておいてください。 うまくいかなかったらごめんなさい。
お礼
何故か同じページのリストがたくさん表示されてしまいました。get_postsを使うのも含めて勉強してみます。