WordPress ACF 复选框循环
WordPress ACF Checkbox loop
我目前的 CPT 为 'restaurant'。
每个餐厅可以有多个 'features',由用户在后端通过 ACF 复选框字段选择。
我希望能够遍历此字段并为选中的每个复选框应用 class 名称。
在下面的示例中,餐厅勾选了 4 个可能字段中的 3 个。
但是,只有 'Parking' 图标显示(4 次)- 可能是由于我的 if 语句。
理想情况下,我希望它循环遍历每个 'if',获取附加到 $feature_icon 的字符串,然后在范围下方的 echo 中将其吐出。
我试过将 if 语句的部分移动到 'foreach' 循环中,但无济于事。
如有任何建议,谢谢。
<?php if( $featured_restaurants ): ?>
<?php foreach ( $featured_restaurants as $featured_restaurant ): ?>
<div class="card__inputs"> <!-- Featured card specific icons start -->
<?php
if(in_array('alcohol', $restaurant_features)):
$feature_icon = "Alcohol";
endif;
if(in_array('family_friendly', $restaurant_features)):
$feature_icon = "Family-Friendly";
endif;
if(in_array('open_late', $restaurant_features)):
$feature_icon = "Open-Late";
endif;
if(in_array('parking', $restaurant_features)):
$feature_icon = "Parking";
endif;
?>
<div class="details u-float-left"> <!-- Featured card specific icons container start -->
<span class="icon icon--medium icon--Italian"></span>
<?php if($restaurant_features): ?>
<?php foreach($restaurant_features as $restaurant_feature): ?>
<span class="icon icon--medium icon--<?php echo $feature_icon; ?>"></span>
<?php endforeach; ?>
<?php endif; ?>
</div> <!-- Featured card specific icons container end -->
</div> <!-- Featured card specific icons end -->
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
使用数组。
<?php if( $featured_restaurants ): ?>
<?php foreach ( $featured_restaurants as $featured_restaurant ): ?>
<div class="card__inputs"> <!-- Featured card specific icons start -->
<?php
if(in_array('alcohol', $restaurant_features)):
$feature_icon['alcohol'] = "Alcohol";
endif;
if(in_array('family_friendly', $restaurant_features)):
$feature_icon['family_friendly'] = "Family-Friendly";
endif;
if(in_array('open_late', $restaurant_features)):
$feature_icon['open_late'] = "Open-Late";
endif;
if(in_array('parking', $restaurant_features)):
$feature_icon['parking'] = "Parking";
endif;
?>
<div class="details u-float-left"> <!-- Featured card specific icons container start -->
<span class="icon icon--medium icon--Italian"></span>
<?php if($restaurant_features): ?>
<?php foreach($restaurant_features as $restaurant_feature): ?>
<span class="icon icon--medium icon--<?php echo $feature_icon[$restaurant_feature]; ?>"></span>
<?php endforeach; ?>
<?php endif; ?>
</div> <!-- Featured card specific icons container end -->
</div> <!-- Featured card specific icons end -->
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
或喜欢
<?php if( $featured_restaurants ): ?>
<?php foreach ( $featured_restaurants as $featured_restaurant ): ?>
<div class="card__inputs"> <!-- Featured card specific icons start -->
<?php
$feature_icon = [
'alcohol' => "Alcohol",
'family_friendly' => "Family-Friendly",
'open_late' => "Open-Late",
'parking' => "Parking",
];
?>
<div class="details u-float-left"> <!-- Featured card specific icons container start -->
<span class="icon icon--medium icon--Italian"></span>
<?php if($restaurant_features): ?>
<?php foreach($restaurant_features as $restaurant_feature): ?>
<span class="icon icon--medium icon--<?php echo $feature_icon[$restaurant_feature]; ?>"></span>
<?php endforeach; ?>
<?php endif; ?>
</div> <!-- Featured card specific icons container end -->
</div> <!-- Featured card specific icons end -->
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
或者删除 if 语句并使用 str_replace()
<?php if( $featured_restaurants ): ?>
<?php foreach ( $featured_restaurants as $featured_restaurant ): ?>
<div class="card__inputs"> <!-- Featured card specific icons start -->
<div class="details u-float-left"> <!-- Featured card specific icons container start -->
<span class="icon icon--medium icon--Italian"></span>
<?php if($restaurant_features): ?>
<?php foreach($restaurant_features as $restaurant_feature): ?>
<?php $icon = str_replace(' ', '-', ucwords(str_replace('_', ' ', $restaurant_feature))); ?>
<span class="icon icon--medium icon--<?php echo $icon ; ?>"></span>
<?php endforeach; ?>
<?php endif; ?>
</div> <!-- Featured card specific icons container end -->
</div> <!-- Featured card specific icons end -->
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
我目前的 CPT 为 'restaurant'。 每个餐厅可以有多个 'features',由用户在后端通过 ACF 复选框字段选择。
我希望能够遍历此字段并为选中的每个复选框应用 class 名称。
在下面的示例中,餐厅勾选了 4 个可能字段中的 3 个。 但是,只有 'Parking' 图标显示(4 次)- 可能是由于我的 if 语句。
理想情况下,我希望它循环遍历每个 'if',获取附加到 $feature_icon 的字符串,然后在范围下方的 echo 中将其吐出。
我试过将 if 语句的部分移动到 'foreach' 循环中,但无济于事。
如有任何建议,谢谢。
<?php if( $featured_restaurants ): ?>
<?php foreach ( $featured_restaurants as $featured_restaurant ): ?>
<div class="card__inputs"> <!-- Featured card specific icons start -->
<?php
if(in_array('alcohol', $restaurant_features)):
$feature_icon = "Alcohol";
endif;
if(in_array('family_friendly', $restaurant_features)):
$feature_icon = "Family-Friendly";
endif;
if(in_array('open_late', $restaurant_features)):
$feature_icon = "Open-Late";
endif;
if(in_array('parking', $restaurant_features)):
$feature_icon = "Parking";
endif;
?>
<div class="details u-float-left"> <!-- Featured card specific icons container start -->
<span class="icon icon--medium icon--Italian"></span>
<?php if($restaurant_features): ?>
<?php foreach($restaurant_features as $restaurant_feature): ?>
<span class="icon icon--medium icon--<?php echo $feature_icon; ?>"></span>
<?php endforeach; ?>
<?php endif; ?>
</div> <!-- Featured card specific icons container end -->
</div> <!-- Featured card specific icons end -->
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
使用数组。
<?php if( $featured_restaurants ): ?>
<?php foreach ( $featured_restaurants as $featured_restaurant ): ?>
<div class="card__inputs"> <!-- Featured card specific icons start -->
<?php
if(in_array('alcohol', $restaurant_features)):
$feature_icon['alcohol'] = "Alcohol";
endif;
if(in_array('family_friendly', $restaurant_features)):
$feature_icon['family_friendly'] = "Family-Friendly";
endif;
if(in_array('open_late', $restaurant_features)):
$feature_icon['open_late'] = "Open-Late";
endif;
if(in_array('parking', $restaurant_features)):
$feature_icon['parking'] = "Parking";
endif;
?>
<div class="details u-float-left"> <!-- Featured card specific icons container start -->
<span class="icon icon--medium icon--Italian"></span>
<?php if($restaurant_features): ?>
<?php foreach($restaurant_features as $restaurant_feature): ?>
<span class="icon icon--medium icon--<?php echo $feature_icon[$restaurant_feature]; ?>"></span>
<?php endforeach; ?>
<?php endif; ?>
</div> <!-- Featured card specific icons container end -->
</div> <!-- Featured card specific icons end -->
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
或喜欢
<?php if( $featured_restaurants ): ?>
<?php foreach ( $featured_restaurants as $featured_restaurant ): ?>
<div class="card__inputs"> <!-- Featured card specific icons start -->
<?php
$feature_icon = [
'alcohol' => "Alcohol",
'family_friendly' => "Family-Friendly",
'open_late' => "Open-Late",
'parking' => "Parking",
];
?>
<div class="details u-float-left"> <!-- Featured card specific icons container start -->
<span class="icon icon--medium icon--Italian"></span>
<?php if($restaurant_features): ?>
<?php foreach($restaurant_features as $restaurant_feature): ?>
<span class="icon icon--medium icon--<?php echo $feature_icon[$restaurant_feature]; ?>"></span>
<?php endforeach; ?>
<?php endif; ?>
</div> <!-- Featured card specific icons container end -->
</div> <!-- Featured card specific icons end -->
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
或者删除 if 语句并使用 str_replace()
<?php if( $featured_restaurants ): ?>
<?php foreach ( $featured_restaurants as $featured_restaurant ): ?>
<div class="card__inputs"> <!-- Featured card specific icons start -->
<div class="details u-float-left"> <!-- Featured card specific icons container start -->
<span class="icon icon--medium icon--Italian"></span>
<?php if($restaurant_features): ?>
<?php foreach($restaurant_features as $restaurant_feature): ?>
<?php $icon = str_replace(' ', '-', ucwords(str_replace('_', ' ', $restaurant_feature))); ?>
<span class="icon icon--medium icon--<?php echo $icon ; ?>"></span>
<?php endforeach; ?>
<?php endif; ?>
</div> <!-- Featured card specific icons container end -->
</div> <!-- Featured card specific icons end -->
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>