显示两种不同自定义帖子类型的内容

时间:2016-06-06 09:17:36

标签: php wordpress custom-post-type

我想循环浏览两种不同的自定义帖子类型,以找出应该显示的内容。在CPT项目中,我现在想要房子的名称,在CPT投资组合中我想知道这个类别。如果这两个是相同的,我希望显示项目CPT中的某些内容。

在此页面上,您使用的是 single-portfolio.php

下面的代码有两个错误(至少)第一个是所有项目的房屋类型($houseType)无缘无故地显示,第二个是第二个循环内的内容不显示一点都不

所以,试着让这个更清楚: 我想显示项目的名称和城市,房屋类型名称与投资组合类别(房屋类型的名称)相匹配

   $args = array('post_type' => 'project');

   $my_query = new WP_Query( $args );

   if( $my_query->have_posts()) while ($my_query->have_posts()) : $my_query->the_post();
            $houseType = the_field('hustyp');
           $argsPort = array(
               'post_type' => 'portfolio',
               'tax_query' => array(
                   array(
                       'taxonomy' => 'portfolio_category',
                       'field' => 'slug', //can be set to ID
                       'terms' => $houseType
                   )));

           $port_query = new WP_Query($argsPort);

           if( $port_query->have_posts()) while ($port_query->have_posts()) : $port_query->the_post(); ?>

                   <tr>
                        <td><?php  the_field('brf')?>/<a href="<?php the_permalink(); ?>"><?php the_field('ort')?></a></td>
                   </tr>

               <?php

               endwhile;
            ?>



       <?php

       endwhile;

我不知道最好的方法是创建一个自己的查询或类似的东西。

有什么想法吗?

更新

好的,我取得了一些进展,最后意识到the_field显示了该字段,因此我应该使用get_field。但是我仍然不知道如何比较两种不同的帖子类型以查看它是否匹配,之后只显示匹配。我认为创建一个数组可以是一个解决方案,但不知道如何前进。正如您在下面的新代码中看到的那样。

新代码:

       $args = array(
       'post_type' => array( 'portfolio', 'project' ));

   $my_query = new WP_Query( $args );

   if( $my_query->have_posts()) {
       while ($my_query->have_posts()) : $my_query->the_post();

           //Returns All Term Items for "my_taxonomy"
           $term_list_portfolio = wp_get_post_terms($post->ID, 'portfolio_category', array("fields" => "all"));

           // Just get the category
           $category = $term_list[0]->name;

           // Get the house type
           $houseType = get_field('hustyp');

           $result = array($term_list[0]->name, get_field('hustyp'));
           print_r($result);

          if($category == $houseType) { ?>
             <tr>
                <td><?php the_field('brf')?><?php the_field('ort') ?>

          <?php }


       endwhile;
   }

1 个答案:

答案 0 :(得分:0)

尝试在第二个wp_query reffer

之前重置查询<?php wp_reset_query(); ?>