【发布时间】:2021-01-15 23:15:25
【问题描述】:
我在我的产品页面上显示属性(颜色)列表。
该列表包含许多类似的属性,例如“蓝色”、“浅蓝色”、“海洋”等等。 为了使属性/颜色列表保持简短,如果“蓝色”是循环的一部分,我想删除每个版本的蓝色。
这是我的循环代码:
<?php
global $product;
$pa_colors = wc_get_product_terms( $product->get_id(), 'pa_colors', array( 'fields' => 'all', 'orderby' => 'menu_order' ) );
if( $pa_colors ) :
?>
<ul>
<?php foreach ( $pa_colors as $pa_color ) : ?>
<li>
<?php echo $pa_color->name; ?>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
我知道,如果里面有颜色“蓝色”,我可以检查循环:
$color_blue = $product->get_attribute('pa_colors');
// Check if blue is in the attribute array:
if( strpos($color_blue, 'blue') !== false ) :
// Versions of blue to remove
$color_blue_versions = array('light blue', 'marine')
但是我如何从 foreach 循环中跳过 $color_blue_versions 中的所有其他蓝色版本?
【问题讨论】:
-
如果
blue存在,为什么不输出blue?if( strpos( $color_blue, 'blue' ) === false ): echo 'blue';? -
因为我会丢失循环中的所有其他属性,例如红色或绿色。对不起,只是一个例子
-
蓝、绿、红总是先输出吗?你有当前输出的例子吗?
-
不幸的是,它总是不同的。您可以考虑电视的功能。如果它具有 4k 输出,我不需要 1080p 功能,它也具有过滤功能,但不是亮点。
标签: php wordpress loops woocommerce attributes