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

WooCommerce调用get_price_html()报null错误 自定义古腾堡块故障求助

修复方案

错误原因

报错核心是woocommerce_template_single_price() 依赖WooCommerce全局$product对象,两种场景会触发对象为空的问题:

  • Gutenberg编辑器后端渲染区块时,未初始化商品上下文
  • 购物车、首页等非商品详情页场景下,全局没有绑定商品对象,你的区块若在这些页面加载就会触发报错

修复代码

替换你现有的价格展示函数为以下版本即可:

function lsc_product_price() {
    global $product;
    
    // 全局无有效商品时,尝试从当前文章ID获取商品对象
    if ( ! is_a( $product, 'WC_Product' ) ) {
        $product = wc_get_product( get_the_ID() );
    }

    // 兜底判断:无有效商品时直接返回空,避免抛出致命错误
    if ( ! is_a( $product, 'WC_Product' ) ) {
        // 可选:编辑器场景下返回占位提示,方便编辑时识别区块
        if ( defined( 'REST_REQUEST' ) && REST_REQUEST ) {
            return '<p style="opacity:.6">商品价格(仅前端商品详情页可见)</p>';
        }
        return '';
    }

    ob_start();
    woocommerce_template_single_price();
    $content = ob_get_contents();
    ob_end_clean();
    return $content;
}

配套优化

  • 加购按钮的实现函数添加完全相同的前置对象判断逻辑即可,无需修改其他代码
  • 可在注册自定义区块的代码外层添加页面判断,仅在商品详情页加载区块逻辑,进一步降低冲突概率:
if ( is_product() ) {
    // 此处放置你注册价格、加购按钮区块的代码
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:06:03