<?php if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } /** * Plugin Name: WooCommerce Product Bundles * Plugin URI: https://woocommerce.com/products/product-bundles/ * Author: SomewhereWarm * * Do not changing bundle prices * * Class WDP_WCPB_Compatibility */ class WDP_WCPB_Compatibility { const KEY = 'some_where_warm_wpb'; const WDP_VERSION = '2.2.4'; const TARGET_VERSION = '6.2.2'; public function is_required() { return class_exists( 'WC_Bundles' ); } public function admin_install() { } public function remove_admin_hooks() { } /** * @param WDP_Price_Display $price_display */ public function install( $price_display ) { add_filter( 'wdp_save_cart_item_keys', array( $this, 'wdp_save_cart_item_keys' ), 10 ); // add_filter( 'wdp_skip_cart_item', array( $this, 'wdp_skip_cart_item' ), 10, 3 ); 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_prepare_cart_item', function ( $item, $wc_cart_item ) { /** * @var WDP_Cart_Item $item * @var array $wc_cart_item */ if ( isset( $wc_cart_item['bundled_by'] ) ) { $item = new WDP_Cart_Item( $item->get_hash(), 0, $item->get_pos(), $item->get_qty() ); $item->make_immutable(); } return $item; }, 10, 2 ); add_filter( 'wdp_internal_cart_items_before_apply', function ( $items, $cart ) { /** * @var WDP_Cart_Item[] $items * @var WDP_Cart $cart */ foreach ( $items as $key => $item ) { $wc_cart_item = $cart->get_item_data_by_hash( $item->get_hash() ); if ( isset( $wc_cart_item['bundled_by'] ) ) { unset( $items[ $key ] ); } } return $items; }, 10, 2 ); } public function remove_hooks() { remove_filter( 'wdp_save_cart_item_keys', array( $this, 'wdp_save_cart_item_keys' ), 10 ); remove_filter( 'wdp_skip_cart_item', array( $this, 'wdp_skip_cart_item' ), 10 ); 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 ); } public function wdp_save_cart_item_keys( $keys ) { $keys[] = 'bundled_by'; $keys[] = 'stamp'; $keys[] = 'bundled_items'; return $keys; } public function wdp_skip_cart_item( $skip, $item, $product ) { if ( isset( $item['bundled_by'] ) ) { // ignore product inside bundle $skip = true; } return $skip; } public function wdp_cart_item_data_before_apply( $cart_item_data, $original_cart_item_data ) { $original_cart_item_data['bundled_items'] = array(); $cart_item_data = array_merge( $cart_item_data, $original_cart_item_data ); return $cart_item_data; } public function wdp_original_cart_item_data( $original_cart_item_data ) { return array(); } } $WDP_WCPB_comp = new WDP_WCPB_Compatibility(); if($WDP_WCPB_comp->is_required()) { $WDP_WCPB_comp->install(null); }
WooCommerce Product Bundles, by SomewhereWarm Print
Created by: Alex Prokaev
Modified on: Tue, 18 Aug, 2020 at 12:37 PM
Did you find it helpful? Yes No
Send feedbackSorry we couldn't be helpful. Help us improve this article with your feedback.