真实的例子:一位顾客在购物车中购买了以下产品:
我的客户使用的是一个表费率运输插件,它只能通过使用购物车内容总重量计算运输成本,在这种情况下,它是3.0kg。
但真正的可充电重量只有2.6公斤...
已经到处搜索,找不到任何函数来计算特定装运类别的购物车项目重量小计,因此我们刚刚起草了以下函数,但它似乎不起作用。有人能帮助改进这个功能吗?
// calculate cart weight for certain shipping class only
if (! function_exists('get_cart_shipping_class_weight')) {
function get_cart_shipping_class_weight() {
$weight = 0;
foreach ( $this->get_cart() as $cart_item_key => $values ) {
if ( $value['data']->get_shipping_class() == 'shipping-from-XX' ) {
if ( $values['data']->has_weight() ) {
$weight += (float) $values['data']->get_weight() * $values['quantity'];
}
}
return apply_filters( 'woocommerce_cart_contents_weight', $weight );
}
}
}
// end of calculate cart weight for certain shipping class
感谢@Loic TheAztec,只需删除额外的"-
//Alter calculated cart items total weight for a specific shipping class
add_filter( 'woocommerce_cart_contents_weight', 'custom_cart_contents_weight', 10, 1 );
function custom_cart_contents_weight( $weight ) {
$weight = 0;
foreach ( WC()->cart->get_cart() as $cart_item ) {
$product = $cart_item['data'];
if ( $product->get_shipping_class() == 'shipping-from-xx' && $product->has_weight() ) {
// just remember to change this above shipping class name 'shipping-from-xx' to the one you want, use shipping slug
$weight += (float) $product->get_weight() * $cart_item['quantity'];
}
}
return $weight;
}
更新(错别字错误已更正)。
要使其正常工作,您需要在自定义挂钩功能中使用专用的woocommerce\u cart\u contents\u weight
过滤器挂钩,如下所示:
add_filter( 'woocommerce_cart_contents_weight', 'custom_cart_contents_weight', 10, 1 );
function custom_cart_contents_weight( $weight ) {
$weight = 0;
foreach ( WC()->cart->get_cart() as $cart_item ) {
$product = $cart_item['data'];
if ( $product->get_shipping_class() == 'shipping-from-XX' && $product->has_weight() ) {
$weight += (float) $product->get_weight() * $cart_item['quantity'];
}
}
return $weight;
}
代码进入函数。活动子主题(或活动主题)的php文件。现在应该可以了。
问题内容: 我正在尝试使用以下功能更改购物车中的产品价格: 它在WooCommerce版本2.6.x中正常运行,但在版本3.0+中不再正常运行 如何使其在WooCommerce 3.0+版中正常工作? 谢谢。 问题答案: 更新 (2018年9月) 使用 WooCommerce 3.0+版本, 您需要: 要改用 钩子。 要改用WC_Cart 方法 改用WC_product 方法 这是代码: 该代码在
我在基于WooCommerce的网站上工作。我在里面有很多产品,所有产品都被分配到不同的产品类别。 现在,我有一个要求,完全删除一个类别的产品,如“woo猫”。 有许多自定义插件和主题,在其中有条件地使用该类别的id/slg,所以我决定不删除类别,该类别的产品或该类别的相关代码。 但我重定向每一个可能出现的URL到商店页面中的类别是包括 像我重定向-单页的产品,类别列表页,也隐藏从现场搜索等。。。
我写的函数应该检查是否有在购物车的项目,其中有一个特定的类别。 我的想法是: 我猜,get_cart()函数将返回购物车的内容,我将能够从中获取有关商品类别的信息。我需要知道get_cart()返回数组的结构,所以我写了: 得到 然后,我尝试在get_cart()函数的结果中查找类别名称: 得到了同样的错误。 使用$woocommerce而不是WC()不会产生任何效果,也不会删除 我做错了什么?我
在WooCommerce中,我需要为产品类别的每一项设置最低数量。我搜索了论坛,找到了一些代码,除了它只计算一个产品类别的总数量外,其他代码运行良好: 例如,如果我有两个属于同一产品类别的产品(A和B),并将该类别的最小数量设置为5,则在这种情况下不会出现客户的错误消息: 产品A:3 产品乙:2 我需要一个最小的数量5的每一个产品的类别。 您知道如何更改和优化以下代码吗?
问题内容: 我正在为wordpress创建一个自定义woocommerce集成主题。 我在顶部有一个Blob,用于显示购物车中的商品总数。我想使用Jquery更新此Blob(不重新加载页面),因此能够通过获取当前商品中的商品数量来增加商品数量blob,并为每次点击将其增加+1,问题是“添加到购物车”具有一个选项,可以选择要添加到购物车的商品数量。因此,如果我选择3个项目并单击按钮,则斑点仅增加1。
问题内容: 我有上面的代码。 如果我在cart_item上运行print_r,我将得到一个多维数组: 我如何只获得product_id? 我试过$ test = 没用 问题答案: 要获取 foreach循环中的每个购物车商品(对于简单产品): 如果是可变产品,请获取 : 或在两种情况下 ( Woocommerce 3+中 的 Object在哪里) : 更新: 循环外使用产品ID 1)打破循环 (仅