如何在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
相关产品推荐
相关产品推荐

