自定义发布类型和分类循环输出错误

时间:2016-12-19 作者:armadadrive

我试图循环浏览符合我的自定义分类法的各种帖子:“行业”。帖子类型是自定义的(类型:“member”),因此我一直在尝试构建一个循环,输出当前的分类标题,然后输出分配了该类别的业务。像这样:

商业服务:A公司

施工服务:B公司

除我当前的代码外,它输出每个标题下的所有业务。我确信逻辑并不完全正确,但我正在努力找出我做错了什么,我看不出来。

我的存档成员。php代码:

  $categories = get_terms(\'industries\', array(
    \'hide_empty\' => 1
  ));

  foreach($categories as $category) {

    $post_array = get_posts(array(\'post_type\' => \'members\', \'industries\' => $category->name));
    setup_postdata($post_array);
    ?>

    <h1><?php echo $category->name; ?></h1>

    <?php
      if(have_posts()):
        while(have_posts()):
          the_post();
    ?>

    <p> <?php the_title(); ?> </p>

    <?php
    endwhile; endif;
    wp_reset_postdata();
  }

1 个回复
最合适的回答,由SO网友:dgarceran 整理而成

我会这样做,与WP查询。正如@Milo所指出的,问题是上面的代码在每个后续迭代中都运行主WP循环,而该循环在自定义查询中没有得到响应。从WP查询创建循环将产生正确的结果。

<?php 

$categories = get_terms(\'industries\', array(
    \'hide_empty\' => 1
));

foreach($categories as $category) { ?>
    <h1><?php echo $category->name; ?></h1>
    <?php
    // WP_Query arguments
    $args = array(
        \'post_type\'              => array( \'members\' ),
        \'industries\'          => $category->name,
    );

    // The Query
    $query = new WP_Query( $args );

    // The Loop
    if ( $query->have_posts() ) {
        while ( $query->have_posts() ) {
            $query->the_post();
            ?>
            <p> <?php the_title(); ?> </p>
            <?php
        }
    } else {
        // no posts found
    }

    // Restore original Post Data
    wp_reset_postdata();
}
    ?>

相关推荐

当in_the_loop()为假时,何时以及为什么is_Single(‘my_cpt’)为真?

我正在使用模板系统的示例代码。此地址的页码:http://project.test/my_cpt/hello-post/.无法理解原因is_singular( \'my_cpt\' ) 是true 虽然in_the_loop() 是false.在页面模板中The Loop "E;“工程”:if ( have_posts() ) { while ( have_posts() ) { the_post(); ?>