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

如何在WooCommerce自定义cart_price函数中获取apply_filters的第二个参数$product?

解决WooCommerce中woocommerce_cart_product_price钩子获取$product参数的问题

嗨,这个问题我之前处理过!你现在的核心问题是add_filter的参数没设置对——默认情况下它只会把第一个参数传给你的自定义函数,但woocommerce_cart_product_price钩子其实可以传递两个参数(格式化后的价格和产品对象)。

只需要两步就能搞定:

1. 修改add_filter调用,指定接收参数数量

把你原来的add_filter代码改成这样:

add_filter('woocommerce_cart_product_price', 'cart_price', 10, 2);

这里的第四个参数2是关键——它告诉WordPress,你的cart_price函数需要接收2个参数,这样第二个参数$product就会被传递过来了。第三个参数10是钩子的优先级,用默认值就行,不用特意改。

2. 更新自定义函数,接收第二个参数

把你的cart_price函数改成带两个参数的形式,这样就能拿到$product对象,进而获取产品分类了:

function cart_price($product_price, $product) {
    // 现在可以轻松获取产品分类信息了
    // 示例1:获取产品所有分类的ID数组
    $category_ids = $product->get_category_ids();
    
    // 示例2:检查产品是否属于某个特定分类(比如分类slug是"electronics")
    if (has_term('electronics', 'product_cat', $product->get_id())) {
        // 这里可以根据分类做自定义操作,比如修改价格显示
        $product_price = wc_price( $product->get_sale_price() ); // 示例:显示促销价
    }
    
    // 重要:必须返回价格,否则购物车价格会显示异常
    return $product_price;
}

这样你就能在函数里自由使用$product对象的所有方法,比如获取分类、产品ID、价格等信息啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:01:03