首页 > 解决方案 > 嵌套循环和 ACF 关系查找中的 Wordpress 条件

问题描述

我有 WP_query 查找产品。

'<?php 
  $args = array(
  'post_type' => 'products',
  'posts_per_page' => -1 ,
  'order' => 'ASC',
  'orderby' => 'menu_order',      
  );
  $products = new WP_Query( $args );?>
  <?php if ( $products->have_posts() ) : ?>
          <!-- layout stuff -->
  <?php while ( $products->have_posts() ) : $products->the_post(); ?>
          <!-- layout stuff -->'

在产品循环中,get_posts 拉入 CPT 帖子列表。

'<?php 
 $serviced_ids = get_field('serviced');
 $serviced = get_posts(array(
  'post_type' => 'services',
  'posts_per_page' => -1 
 ));
 ?>
 <?php if( $serviced ): ?>
    <!-- layout stuff -->
 <?php foreach( $serviced as $service ): ?>'

在每个 CPT 帖子旁边,它会查看产品是否存在于 ACF 关系中。如果是,则显示 Yes,否则显示 No。

'<?php 
  if( !empty($serviced_ids) && is_array($serviced_ids) && 
  in_array($serviced->ID, $serviced_ids) ): ?>
      Yes
  <?php else: ?>
      No
  <?php endif; ?>  '

到目前为止,一切都很好 ...

然后,如果 CPT ID 等于 50,我想在 ELSE 输出中添加一个条件元素。我无法让它工作。

我试过了

'<?php else: ?>
   <?php if($products->ID = 50): ?>
     <?php echo $something; ?>
   <?php endif; ?>'

我对 PHP 的流利程度不是很高,无法超越这一点。

我正在寻找的输出是:

产品名称

产品名称

标签: wordpressconditionalnested-loopsadvanced-custom-fields

解决方案


感谢 Pendo 用 get_the_ID() 引导我朝着正确的方向前进。我需要的代码行是:

'<?php if( get_the_ID() === 50) : ?>'

推荐阅读