我正在尝试为WordPress开发一个查询,这将允许我显示仅包含标题的子页面列表,然后在每个子页面标题下,显示grandchilden(子项的子项)页面标题及其内容的列表
例如,输出应该是这样的:
<ul>
<li>
<h1>Page 1</h1>
<ul>
<li>
<h2>Child Page 1</h2>
</li>
<li>
<h2>Child Page 2</h2>
<ul>
<li>
<h3>Grandchild</h3>
<p>Hello, welcome to this grandchild page</p>
</li>
<li>
<h3>Grandchild #2</h3>
<p>Hello, welcome to this grandchild page</p>
</li>
</ul>
</li>
<li>
<h2>Child Page 3</h2>
</li>
</ul>
</li>
<li>
<h1>Page 2</h1>
</li>
</ul>
需要动态完成,这意味着我不想将帖子ID号指定为查询的一部分。
我尝试过使用标准的WordPress查询,然后在第一个查询中嵌套第二个查询 - 这次失败。
此外,我还尝试修改此处显示的代码:http://wordpress.org/support/topic/query-child-pages-of-a-current-page-and-loop-through-each-child-page
最后,我还尝试修改此代码:
<?php if ( have_posts() ) { while ( have_posts() ) { the_post(); $thispage=$post->ID; }} ?>
<?php $childpages = query_posts('post_per_page=3&orderby=menu_order&order=asc&post_type=' . get_post_type( $post->ID ) . '&post_parent='.$thispage);
if($childpages){ /* display the children content */
foreach ($childpages as $post) :
setup_postdata($post); ?>
<li><a class="" href="#<?php echo($post->post_name) ?>">
<?php the_title(); ?>
</a></li>
<?php
endforeach;
} ?>
我一直试图让这个工作超过一天,我真的只是在圈子里去。
非常感谢帮助实现这项工作。
答案 0 :(得分:3)
这应该适合你,它只有1级深,但你应该得到要点。
echo "<ul>";
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
echo "<li><h1>".get_the_title()."</h1>";
$args=array(
'orderby' => 'menu_order',
'order' => 'ASC',
'posts_per_page' => 3,
'post_type' => get_post_type( $post->ID ),
'post_parent' => $post->ID
);
$childpages = new WP_Query($args);
if($childpages->post_count > 0) { /* display the children content */
echo "<ul>";
while ($childpages->have_posts()) {
$childpages->the_post();
echo "<li><h2>".get_the_title()."</h2></li>";
}
echo "</ul>";
}
wp_reset_query();
echo "</li>";
}
}
echo "</ul>";
答案 1 :(得分:0)
我尝试了一些类似的东西并且深入了几个层次。
Page 1 | |-Child 1 | |-Child 2 | |-Grand child 1 | |-Grand child 2 | |-Great grand child 1 | |-Great grand child 2
完整的代码就在这个链接上 https://gist.github.com/bahiirwa/3aee9cd7732b1f438dfcb5909075cc61