php - 当定义的产品是 WooCommerce 购物车时添加折扣
问题描述
我正在尝试为两种产品都在购物车中时设置折扣,无论那里还有什么其他产品。
到目前为止,只需要数组中的两个之一。
add_action( 'woocommerce_cart_calculate_fees', 'discount_for_ab_products' );
function discount_for_ab_products( $cart ) {
$product_ids = array(34,35);
foreach ($product_ids as $product_id => $product) {
$product_cart_id = WC()->cart->generate_cart_id( $product );
$product_ab_in_cart = WC()->cart->find_product_in_cart( $product_cart_id );
if ( $product_ab_in_cart ) {
$discount = $cart->subtotal * 0.1;
$cart->add_fee( __( 'Discount', 'woocommerce' ) , -$discount );
}
}
}
解决方案
请尝试以下操作,当所有定义的产品 ID 都在购物车中时(在您的情况下为两个),这将产生折扣:
add_action( 'woocommerce_cart_calculate_fees', 'x_products_discount' );
function x_products_discount( $cart ) {
// Settings below
$product_ids = array(34, 35); // <== Your defined product Ids
$percentage = 10; // <== discount in percentage (10% here)
$found_ids = array();
// Loop through cart items
foreach (WC()->cart->get_cart() as $cart_item ) {
// Loop through defined product Ids
foreach( $product_ids as $product_id ) {
if( in_array( $product_id, array( $cart_item['product_id'], $cart_item['variation_id'] ) ) ) {
$found_ids[$product_id] = $product_id;
break;
}
}
}
// Discount part
if( count( $found_ids ) === count( $product_ids ) ) {
$cart->add_fee( __( 'Discount', 'woocommerce' ), -( $cart->subtotal * $percentage / 100 ) );
}
}
代码在您的活动子主题(或活动主题)的functions.php 文件中。测试和工作。
推荐阅读
- java - 最大外壳尺寸?
- wordpress - 如何解决:某些管理员的 Wordpress 管理员加载时间慢,而其他管理员则好
- android - 安卓导航组件。如何在不创建新图形的情况下覆盖另一个构建变体的片段或操作
- excel - 如何克服excel中的“堆栈空间不足错误”?
- apache - 使本地网站可供本地网络中的所有设备使用
- ios - Xcode 缺少支持文件 iOS 12.2 (16E227)
- openedx - 如何修复 Open edX 中浣熊主题中的错误
- delphi - 帕斯卡中的函数步骤
- node.js - 使用 Redis Pub/Sub 的 Socket IO 服务器集群
- matlab - 使用 Matlab 修改/更新 Simulink 模块名称