WooCommerce商品列表页PHP条件语句失效问题求助
问题根源与快速修复
嘿,这个问题其实是个很常见的小疏忽——你在if条件里用错了运算符!
你写的代码里:
if ($beschikbaarheid = "dsgdfsg"){
这里的=是赋值运算符,它会把字符串"dsgdfsg"直接赋值给$beschikbaarheid,然后这个表达式的结果永远是true,所以不管商品的实际属性值是什么,都会执行echo "Hello World!";这行代码。
正确的写法应该用比较运算符:
- 如果你只需要比较值是否相等,可以用双等号
==(松散比较) - 更推荐用三等号
===(严格比较),它会同时检查值和数据类型是否一致,避免一些隐性的类型转换问题
修正后的完整代码:
function uit_productie_badge() { global $product; $beschikbaarheid = $product->get_attribute('pa_beschikbaarheid'); echo '<span class="sold-out">' . $beschikbaarheid . '</span>'; // 改成 === 做严格比较 if ($beschikbaarheid === "dsgdfsg"){ echo "Hello World!"; } } add_action( 'woocommerce_before_shop_loop_item_title', 'uit_productie_badge');
另外,你可以先打印一下$beschikbaarheid的实际值,确认它和你用来比较的字符串完全一致(比如有没有空格、大小写差异),如果有差异的话,可能还需要做一些预处理,比如:
// 去除前后空格,统一为小写后再比较 $beschikbaarheid = strtolower(trim($product->get_attribute('pa_beschikbaarheid'))); if ($beschikbaarheid === strtolower("dsgdfsg")){
这样就能确保只有当商品的pa_beschikbaarheid属性值确实等于你指定的字符串时,才会显示Hello World啦!
内容的提问来源于stack exchange,提问作者cvl01
相关产品推荐
相关产品推荐

