如何解决如果特定产品在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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。