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 クエリを使用してから、最初のクエリ内に 2 番目のクエリをネストしようとしましたが、これは失敗しました。

さらに、ここにあるコードを修正してみました: 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;
     } ?>

私はこれを1日以上機能させようとしてきましたが、本当にぐるぐる回っています。

これを機能させるための助けをいただければ幸いです。

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 に答える