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

使用do_shortcode调用WooCommerce产品短码时价格过滤器失效

解决WooCommerce价格过滤器在do_shortcode调用时失效的问题

你的价格过滤器失效的核心原因是:过滤器的页面判断条件里没包含购物车页(is_cart())。

看你写的custom_variable_price函数,只有当页面是商店页、产品分类/标签页、产品详情页或首页时,才会触发价格修改逻辑。但你是在购物车页通过do_shortcode调用产品短码,此时页面属于购物车页,不满足判断条件,所以过滤器直接返回原价格,导致失效。

修复步骤:

把is_cart()添加到过滤器的页面判断条件中,同时别忘了检查custom_price函数(因为你也给它绑定了价格相关过滤器),确保两个函数的条件都包含购物车页。

修改后的custom_variable_price函数:

function custom_variable_price( $price, $variation, $product ) {
    
    if((!is_admin() && !wp_doing_ajax()) && (is_shop() || is_product_category() || is_product_tag() || is_product() || is_front_page() || is_cart())) {

        return get_discounted_price($product, $price);

    }

    return $price;

}

对应的custom_price函数也需要同步修改(示例):

function custom_price( $price, $product ) {
    
    if((!is_admin() && !wp_doing_ajax()) && (is_shop() || is_product_category() || is_product_tag() || is_product() || is_front_page() || is_cart())) {

        return get_discounted_price($product, $price);

    }

    return $price;

}

修改后,购物车页通过do_shortcode调用产品短码时,价格过滤器就能正常触发了。

内容的提问来源于stack exchange,提问作者mr.work

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 04:31:13