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

WordPress的functions.php中Woocommerce相关PHP代码报错,无法定位问题求排查

问题定位

你提供的报错截图指向的是JS语法错误,结合代码排查问题如下:

  • 核心错误:jQuery代码段中的变量声明不符合语法规范,var p = 'p.price' 行末尾缺少逗号,导致q变量的声明逻辑断裂,浏览器解析JS时直接抛出语法错误。
  • 潜在问题:未对价格标签的初始内容做判空处理,部分主题下如果商品详情页不存在.price类的p标签,会导致后续赋值逻辑报错。

修复后完整代码

<?php
function iconic_format_price_range( $price, $from, $to ) {
return sprintf( '%s: %s', __( 'from', 'iconic' ), wc_price( $from ) );
} 

add_filter( 'woocommerce_format_price_range', 'iconic_format_price_range', 10, 3 );

// 移除可变产品的默认价格区间
remove_action( 'woocommerce_single_product_summary', 
'woocommerce_template_single_price', 10 );

add_action('woocommerce_before_add_to_cart_form', 
'selected_variation_price_replace_variable_price_range');
function selected_variation_price_replace_variable_price_range(){
global $product;

if( $product->is_type('variable') ):
?><style> .woocommerce-variation-price {display:none;} </style>
<script>
jQuery(function($) {
    var p = 'p.price', // 修复:补全变量声明末尾的逗号
        q = $(p).length ? $(p).html() : ''; // 修复:增加标签存在性判断,避免空值报错

    $('form.cart').on('show_variation', function( event, data ) {
        if ( data.price_html && $(p).length ) {
            $(p).html(data.price_html);
        }
    }).on('hide_variation', function( event ) {
        $(p).html(q);
    });
});
</script>
endif;
}

额外优化建议

  • 建议将<style>标签内的样式规则迁移到主题自带的自定义CSS面板或style.css文件中,避免PHP文件硬编码样式,后续调整更方便
  • 如果你的主题价格标签不是p.price的结构,可以把选择器替换为当前主题实际使用的价格标签选择器

内容的提问来源于stack exchange,提问作者Vexagon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:18:04