为何WordPress代码中get_woocommerce_currency_symbol()忽略If条件?
问题原因与解决方案
原因分析
- 变量名拼写不一致:你代码中判断的是
$salePrice,但问题描述里提到的是$salesPrice(多了一个s)。这两个是完全独立的PHP变量,会直接导致条件判断逻辑错误——比如当你认为$salesPrice等于$price时,实际代码判断的$salePrice可能和$price不相等,从而错误输出.ecomm-regular-price标签;如果此时$price为空值,就会只显示货币符号。 - 潜在类型不匹配问题:如果
$price和$salePrice类型不同(比如一个是字符串、一个是数字),使用严格不等于运算符!==会导致判断不符合预期。例如'99' !== 99会返回true,错误触发条件输出标签。
解决方案
- 统一变量名:将代码中的变量名修正为一致的,比如把判断条件里的
$salePrice改成$salesPrice(和你描述的变量对齐):
<?php if($salesPrice !== $price) : ?> <span class="ecomm-regular-price"> <?php echo get_woocommerce_currency_symbol() . $price ?> </span> <?php endif; ?> <span class="ecomm-sale-price"> <?php echo get_woocommerce_currency_symbol() . $salesPrice; ?> </span>
- 增加非空判断(可选):为了避免
$price为空时只显示货币符号,可以在条件里加入非空校验:
<?php if($salesPrice !== $price && !empty($price)) : ?> <span class="ecomm-regular-price"> <?php echo get_woocommerce_currency_symbol() . $price ?> </span> <?php endif; ?>
- 调整判断运算符(按需):如果不需要严格校验类型,可以把
!==换成!=,避免类型差异导致的误判:
<?php if($salesPrice != $price) : ?>
内容的提问来源于stack exchange,提问作者rtwoods88
相关产品推荐
相关产品推荐

