【发布时间】:2015-11-25 22:09:12
【问题描述】:
如果购物车中的任何商品来自特定类别,我需要能够有条件地仅将 一个 产品添加到 WooCommerce 订单/购物车中。 这是我尝试过的代码,但它锁定了结帐和购物车页面,不返回任何 woocommerce 信息,或之后的任何内容(没有页脚,没有额外的页面元素等......直到前面的 WooCommerce 数据为止) -end,后面有一个很大的空格)。请,如果有人能指出我正确的方向,将不胜感激!
这是我的 functions.php 文件中的内容:
/**
* Checks the cart to verify whether or not a product from a Category is in the cart
* @param $category Accepts the Product Category Name, ID, Slug or array of them
* @return bool
*/
function qualifies_basedon_product_category( $category ) {
foreach( WC()->cart->cart_contents as $key => $product_in_cart ) {
if( has_term( $category, 'fee', get_id_from_product( $product_in_cart, false ) ) ) {
return true;
}
}
// Return false in case anything fails
return false;
}
/**
* Adds a specific product to the cart
* @param $product_id Product to be added to the cart
*/
function add_incentive_to_cart( $product_id ) {
// Check the cart for this product
$cart_id = WC()->cart->generate_cart_id( $product_id );
$prod_in_cart = WC()->cart->find_product_in_cart( $cart_id );
// Add the product only if it's not in the cart already
if( ! $prod_in_cart ) {
WC()->cart->add_to_cart( $product_id );
}
}
add_action( 'woocommerce_check_cart_items', 'qualifies_for_incentive' );
function qualifies_for_incentive() {
// Incentive product
$incentive_product_id = 506;
if( qualifies_basedon_product_category( 'fee' ) ) {
add_incentive_to_cart( $incentive_product_id );
}
}
【问题讨论】:
-
这与我想要实现的目标“相似”,但使用的是产品而不是费用......stackoverflow.com/questions/26240591/… 另外,在有人建议之前,我已经购买了 Woo Force Sells 扩展,但问题是它会自动为该类别中的每个产品添加额外的产品,而不仅仅是每个购物车一次......所以如果有另一种使用强制销售的方法来处理它,我也会对此持开放态度...... .只需能够将强制出售的商品在购物车中出现的次数限制为一次。
标签: wordpress woocommerce