如果特定产品在WooCommerce购物车中,则在购物车页面中显示通知

问题描述

我们如何使下面的此功能检查多个产品ID,而不仅仅是一个ID,我们如何将其转换为数组?

add_action( 'woocommerce_before_cart','bbloomer_find_product_in_cart' );
    
function bbloomer_find_product_in_cart() {
  
   $product_id = 17285;
  
   $product_cart_id = WC()->cart->generate_cart_id( $product_id );
   $in_cart = WC()->cart->find_product_in_cart( $product_cart_id );
  
   if ( $in_cart ) {
  
      $notice = 'DON\'t Forget to Apply the discount coupon code you received to complete purchasing with the discounted price';
      wc_print_notice( $notice,'notice' );
  
   }
  
}

我们尝试了$product_ids = array("17285","17302"); //,但是没用

我们也尝试过此方法,但也无法正常工作

add_filter( 'woocommerce_before_cart','ts_woocommerce_quantity_selected_numbe',10,2 );
function ts_woocommerce_quantity_selected_numbe( $product ) {
    $product_ids = array("15757","15758"); // Here the array of product Ids

    if ( in_array( $product->get_id(),$product_ids ) ) {
        // In cart
        if ( ! is_cart() ) {
            $notice = 'DON\'t Forget to Apply the discount coupon code you received to complete purchasing with the discounted price';
      wc_print_notice( $notice,'notice' );
        } 
    }
}

解决方法

要检查购物车中是否有一个或多个产品ID,并显示通知,请改用:

add_action( 'woocommerce_before_cart','found_product_in_cart_display_message' );
function found_product_in_cart_display_message() {
    $product_ids = array(17285,17302); // Array or product ids

    // Loop through cart items
    foreach ( WC()->cart->get_cart() as $item ) {
        if ( array_intersect( $product_ids,array($item['product_id'],$item['variation_id']) ) ) {
            // Display a notice
            wc_print_notice( __("Don't forget to apply the discount coupon code you received to complete purchasing with the discounted price."),'notice' );
            break; // Stop the loop
        }
    }
}

代码进入活动子主题(或活动主题)的functions.php文件中。经过测试,可以正常工作。

,

对于购物车中的产品ID数组,请使用此代码,

$array_product_ids = array();

foreach( WC()->cart->get_cart() as $cart_item ){
    $product_id = $cart_item['product_id'];
    $array_product_ids =   $product_id
}
print_r($array_product_ids);    // here you find all product id which are in the cart. 

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...