1

我正在尝试为 WordPress 开发一个查询,该查询将允许我显示仅包含标题的子页面列表,然后在每个子页面标题下显示孙子(子项的子项)页面标题及其内容的列表。

例如,输出应该是这样的:

<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;
     } ?>

我一直在努力让这个工作超过一天,我真的只是在绕圈子。

非常感谢帮助您完成这项工作。

4

2 回答 2

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>";
于 2012-06-03T19:59:16.840 回答
0

我尝试了某种东西并深入了几个层次。

第 1 页
|
|-儿童 1
|
|-孩子2
    |
    |-孙子1
    |
    |-孙子2
        |
        |-曾孙1
        |
        |-曾孙2

完整代码在此链接 https://gist.github.com/bahiirwa/3aee9cd7732b1f438dfcb5909075cc61

于 2016-10-06T09:49:37.890 回答