【发布时间】:2019-09-26 19:10:59
【问题描述】:
我有 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 的流利程度不是很高,无法超越。
我正在寻找的输出是:
产品名称
- 服务名称:是
- 服务名称:是
- 服务名称:否
- 服务名称:$something else
- 服务名称:是
产品名称
- 服务名称:否
- 服务名称:否
- 服务名称:否
- 服务名称:$something else
- 服务名称:否
【问题讨论】:
-
你当前的全局 $post 对象由 $products->the_post() 设置。如果你想知道当前产品的post_id(或ID),你需要get_the_ID();
标签: wordpress conditional nested-loops advanced-custom-fields