class WDP_WOOSB_Compatibility { const KEY = 'wpclever_woosb'; const WDP_VERSION = '2.2.4'; const TARGET_VERSION = '3.8.3'; public function is_required() { return defined( 'WOOSB_VERSION' ); } public function admin_install() { } public function remove_admin_hooks() { } /** * @param WDP_Price_Display $price_display */ public function install( $price_display ) { add_filter( 'wdp_cart_item_data_before_apply', array( $this, 'wdp_cart_item_data_before_apply' ), 10, 2 ); add_filter( 'wdp_original_cart_item_data', array( $this, 'wdp_original_cart_item_data' ), 10, 1 ); add_filter( 'wdp_skip_cart_item', array( $this, 'wdp_skip_cart_item' ), 10, 3 ); add_action( 'woocommerce_before_calculate_totals', array( $this, 'sanitize_cart_items' ), 10, 0 ); add_action( 'woocommerce_cart_id', array( $this, 'woocommerce_cart_id' ), 10, 1 ); } public function remove_hooks() { remove_filter( 'wdp_cart_item_data_before_apply', array( $this, 'wdp_cart_item_data_before_apply' ), 10 ); remove_filter( 'wdp_original_cart_item_data', array( $this, 'wdp_original_cart_item_data' ), 10 ); remove_filter( 'wdp_skip_cart_item', array( $this, 'wdp_skip_cart_item' ), 10 ); } /** * "Bundle" tries to add item hash in his meta, but misses, because we change it. * Unfortunately, we have to check and sanitize every time * * @see WPcleverWoosb::woosb_add_to_cart_items() */ public function sanitize_cart_items() { foreach ( WC()->cart->cart_contents as $cart_item_key => $cart_item ) { if ( empty( $cart_item['data'] ) ) { unset( WC()->cart->cart_contents[ $cart_item_key ] ); } } } public function woocommerce_cart_id( $cart_id ) { $this->sanitize_cart_items(); return $cart_id; } public function wdp_cart_item_data_before_apply( $cart_item_data, $original_cart_item_data ) { if ( isset( $original_cart_item_data['woosb_ids'], $original_cart_item_data['woosb_fixed_price'] ) ) { $cart_item_data['woosb_ids'] = $original_cart_item_data['woosb_ids']; $cart_item_data['woosb_fixed_price'] = $original_cart_item_data['woosb_fixed_price']; } return $cart_item_data; } public function wdp_original_cart_item_data( $original_cart_item_data ) { if ( isset( $original_cart_item_data['woosb_ids'] ) ) { $original_cart_item_data = array(); } return $original_cart_item_data; } public function wdp_skip_cart_item( $skip, $item, $product ) { // ignore product inside bundle if ( isset( $item['woosb_parent_id'] ) ) { $skip = true; } return $skip; } } $cmp = new WDP_WOOSB_Compatibility(); if ( $cmp->is_required() ) { $cmp->install( null ); }
WPC Product Bundles for WooCommerce, by WPclever.net Print
Created by: Alex Prokaev
Modified on: Fri, 13 Dec, 2019 at 4:26 PM
Did you find it helpful? Yes No
Send feedbackSorry we couldn't be helpful. Help us improve this article with your feedback.