You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:43:02