【问题标题】:Wordpress list child pages on child page using foreach loopWordpress 使用 foreach 循环在子页面上列出子页面
【发布时间】:2016-02-24 09:11:14
【问题描述】:

我正在使用 foreach 循环在父页面上列出子页面,效果很好。但是,子页面不会在子页面上列出,这正是我想要的。

到目前为止,这对父页面有效:

<?php

$nav = array(
    'post_type' => 'page',
    'orderby' => 'title',
    'order' => 'ASC',
    'post_parent' => $post->ID
);

$child_pages = get_posts($nav);

?>
<ul>
    <?php foreach ($child_pages as $child_page) : ?>
        <li>
            <a href="<?=get_permalink($child_page->ID); ?>"><?=$child_page->post_title; ?></a>
        </li>
    <?php endforeach; ?>
</ul>

理想情况下,我想继续使用 foreach 而不是任何其他循环。我想知道是否需要在现有循环中添加另一个循环,但我不确定如何继续。

任何帮助将不胜感激。

【问题讨论】:

    标签: php wordpress loops foreach


    【解决方案1】:

    您可以在这里做的是使用 wp_get_post_parent_id 检查当前页面是否是子页面 - 请参阅 http://codex.wordpress.org/Function_Reference/wp_get_post_parent_id,然后如果页面是子页面 - 使用父 id,否则只需使用帖子 ID。这样的事情应该可以工作:

    global $post;
    if(wp_get_post_parent_id( $post->ID ))
    {
        $nav = array(
            'post_type' => 'page',
            'orderby' => 'title',
            'order' => 'ASC',
            'post_parent' => wp_get_post_parent_id( $post->ID )
        );
    }
    else{
        $nav = array(
        'post_type' => 'page',
        'orderby' => 'title',
        'order' => 'ASC',
        'post_parent' => $post->ID
        );
    }
    $child_pages = get_posts($nav);
    

    【讨论】:

      【解决方案2】:

      使用 parent 而不是 post_parent

          <?php
      
          $nav = array(
              'post_type' => 'page',
              'orderby' => 'title',
              'order' => 'ASC',
              'child_of' => $post->ID
          );
      
          $child_pages = get_posts($nav);
      
          ?>
          <ul>
              <?php foreach ($child_pages as $child_page) : ?>
                  <li>
                      <a href="<?=get_permalink($child_page->ID); ?>"><?=$child_page->post_title; ?></a>
                  </li>
              <?php endforeach; ?>
          </ul>
      

      希望对你有帮助

      【讨论】:

      • 嘿 - 不幸的是,这并没有只给我那个父母的子页面。这给了我所有页面的列表。不过还是谢谢。
      • 我已将父级更改为 child_of 尝试,如果有帮助
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-17
      • 1970-01-01
      • 2018-05-11
      • 1970-01-01
      • 2019-08-24
      相关资源
      最近更新 更多