=== J Cart Upsell and Cross-sell for WooCommerce === Contributors: jakjako, ghlab Donate link: https://www.buymeacoffee.com/Jakjako Requires at least: 5.0 Tested up to: 6.8 Requires PHP: 7.1 Stable tag: 4.0.8 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Boost your WooCommerce with targeted upsells, cross-sells, gifts and a cool modal cart. == Description == J Cart Upsell and Cross-sell is a WooCommerce plugin that boosts your sales trough a modern, customizable modal shopping cart. See it in action on a demo website! J Cart Upsell and Cross-sell Demo = *NEW* = Display upsells wherever you want with the *Upsells Shortcode* = *NEW* = Added integrations tab where you can enable integrations with popular plugins - WPRocket - WooCommerce Price Based on Country - FOX – Currency Switcher Professional for WooCommerce - CURCY – Multi Currency for WooCommerce = *Multilanguage* = J Cart Upsell and Cross-sell is fully compatible with WPML and Polylang = *Product bundles* = Compatible with WooCommerce Product Bundles, Easy Product Bundles for WooCommerce and WPC Product Bundles = Multiple goals on the dynamic bar = Now you can set multiple goals with the dynamic bar option = Fully customizable = Change colors, text and plugin behaviour with the plugin customization backend. = Upsells = Show to your customers targeted upsell, directly in their modal cart or in the checkout recap table, with customized text. Choose and customize the conditions that trigger the upsell ( premium only ): - products categories and/or attributes - a defined list of products and add filters like ( free and premium ): - only if user is logged in - only if cart has subotal greater than = Gifts = Give to your customers dedicated gifts when their cart meet defined conditions. Choose and customize the conditions that trigger the gift ( premium only ): - products categories and/or attributes - a defined list of products and add filters like ( free and premium ): - only if user is logged in - only if cart has subotal greater than Add a label to the archive page's products that can trigger a gift Add a customized text on the single product page that can trigger a gift = Dynamic Bar = Set a goal and display on top of the modal cart a dynamic bar synchronized to the cart total **Example 1:** set the dynamic bar goal at the same amount of your free shipping limit and let the customers know how much they need before getting that **Example 2:** give a gift at 150 and set the dynamic bar goal to the same amount, to encourage customers to purchase more = Premium Version = Premium version offers more versatility about your gifts and upsells. **Checkout upsells** You can show your upsells directly in the checkout page **Gifts by coupon code** Trigger a gift only if a certain coupon code is applied to the customer's cart **Advanced conditions** Create mixed and advanced conditions to trigger your upsells and/or your gifts **Backoffice order recap helpers** Add a column on your orders backoffice tabs that shows if the order has been pumped = Template overrides = You can override template files coping the template folder inside the plugin into your child theme and renaming it from templates to **wc-j-upsellator**. = Hooks ( actions and filters ) = `add_filter('wjufw_shipping_bar_limit', function( $limit ){ // manipulate the dynamic bar limit and return it // return type: float or integer return $limit; }, 999, 1 );` `add_filter('wjufw_product_cart_limit', function( $limit, $product ){ // manipulate the cart limit for a specific gifted/upselled product // return type: float or integer return $limit; }, 999, 2 );` `add_action('wjufw_before_single_product_gift_text', function( $product_id ){ // do something **before** gift text ( if set ), on the single product page }, 999, 1 );` `add_action('wjufw_after_single_product_gift_text', function( $product_id ){ // do something **after** gift text ( if set ), on the single product page }, 999, 1 );` `apply_filters('wjufw_cart_item_name', function( $product->get_name(), $product, $product['key'] ){ // this filter is like the woocommerce one ( woocommerce_cart_item_name ): // you can alter how the cart item name is displayed on the modal cart }, 999, 1 );` `apply_filters('wjufw_dynamic_bar_display', function(){ // accepts true or false as return // true - dynamic bar displayed as usual // false - dynamic bar removed } );` **Cover image credits** Designed by pikisuperstar / Freepik **Contribute and credits** J Cart Upsell and Cross-sell for WooCommerce is developed and mantained by GH S.R.L. = Support = * For the free version of the plugin, use the official forum or mail directly the author trough the **Mail the author** button. * All premium products include premium support. == Installation == **Minimum Requirements** * PHP 7.1 or higher * MySQL 5.6 or higher J Cart Upsell and Cross-sell for WooCommerce can be installed directly through your WordPress Plugin Board. * Click "Add New" and search for "J Cart Upsell and Cross-sell for WooCommerce". * **Install and activate.** Alternatively you can download the plugin using the download button on this page and then upload the "wc-j-upsellator" folder to the / wp-content / plugins / directory then activate through the WordPress plugins page. == Screenshots == 1. J Cart Upsell and Cross-sell for WooCommerce with carousel and logo 2. Checkout Upsell 3. J Cart Upsell and Cross-sell for WooCommerce without logo 4. J Cart Upsell and Cross-sell for WooCommerce admin options == Frequently Asked Questions == = Do i need to enable something? = In order to let *J Cart Upsell and Cross-sell for WooCommerce** work properly, be sure to enable the "Activate the Ajax add to cart buttons" in the WooCommerce -> Settings -> Products tab = Can i use the plugin without purchasing the premium version? = Yes, you can use **J Cart Upsell and Cross-sell for WooCommerce** without purchasing the premium version. = Can i have multiple upsells triggered by single product? = You can choose between standard mode, stacked and carousel. With the standard mode, only **one upsell at time** is offered to the customer. If the customer accepts that upsell, he will see the next one in the priority list. However, you can play with the priority order of **J Cart Upsell and Cross-sell for WooCommerce**: an upsell by product list is stronger than one by category/attribute list that is stronger than one triggered by cart limit. With **stacked** you can display how many upsells at the same time as you wish, stacked on eachother. With **carousel**, all upsells are displayed at the same time trough a carousel. = Is multilanguage compatible? = J Cart Upsell and Cross-sell for WooCommerce is **compatible** with Polylang and WPML. Be sure to have also the Polylang WooCommerce add-on installed. = Does it works with Elementor or Divi? = Yes, **J Cart Upsell and Cross-sell for WooCommerce** works fine with Elementor and Divi. If you are using the Elementor cart widget and you want to keep that widget because it looks cool, you need to add the **wc-j-upsellator-show-cart** class to it. This class will make that element able to trigger the modal cart. Since 2 modal carts can't be both active at the same time, the modal cart of Elementor cart item will be disabled. = What if my theme already has a modal cart? = **J Cart Upsell and Cross-sell for WooCommerce** by default keeps your theme cart-fragments untouched so it will all works properly. = Is it PHP 8.x compatible? = Yes, it works perfectly with the new version of PHP. = The subtotal is displayed without VAT. How can i fix? = In the main options page, try to activate the "Cart total" option. = What if I want more features? = Contact me, maybe these features can be implemented directly into **J Cart Upsell and Cross-sell for WooCommerce**. == Changelog == **15 of August 2025** - J Cart Upsell and Cross-sell for WooCommerce version 4.0.8 = Version - 4.0.2 * Add - Added "wcjfw_after_checkout_buttons_block" action, after modal cart checkout buttons block = Version - 4.0.0 * Add - Upsell image is now clickable = Version - 3.8.8 * Add - Option to choose the language on which upsells/gitfts are offered * Fix - issue with gifts and upsell when using WPML = Version - 3.8.8 * Add - Compatibility with Easy Product Bundles for WooCommerce by Product Bundles Team = Version - 3.8.2 * Add - "empty" class to fixed button when no items in cart * Fix - Bug with currency switcher plugins = Version - 3.8.1 * Fix - Open on add to cart option bug resolved = Version - 3.8.0 * Add - WPML Compatibility = Version - 3.7.1 = * Add - Support for WooCommerce HPOS * Change - Order table info when order has upsell = Version - 3.7.0 = * Add - Logical operator choice when selectin "product list" as upsell or gift condition = Version - 3.6.0 = * Fix - Bug with WPML = Version - 3.5.4 = * Add - Set number of products that needs to satisfy conditions in order to trigger a gift = Version - 3.5.3 = * Fix - Upsells not displayed on Checkout and Cart = Version - 3.5.2 = * Add - Beta option to autoplay the upsells carousels * Add - Performance improve with WP >= 6.4 ( wp_prime_option_caches ) = Version - 3.5.1 = * Add - Ability to change the product of an upsell or gift * Fix - Minor bugs = Version - 3.4.5 = * Add - Display product meta-data on modal cart = Version - 3.4.3 = * Add - Compatibility with WordPress 6.3 and WooCommerce 8.0.2 = Version - 3.4.1 = * Add - Option to exclude gift if the same product is already in cart as upsell = Version - 3.4.0 = * Fix - Issue when recaculating gifts = Version - 3.3.99 = * Add - Compatibility with WooCommerce 7.8.0 = Version - 3.3.96 = * Add - Blurred gifts always visible on cart = Version - 3.3.92 = * Add - Dynamic Bar Shortcode = Version - 3.3.9 = * Add - Upsells sorting = Version - 3.3.8 = * Fix - Reversed conditions during upsell creation = Version - 3.3.7 = * Fix - Mobile Carousel issue = Version - 3.3.4 = * Beta - Added upsells shortcode * Beta - Added integrations page = Version - 3.2.5 = * Fix - Fixed displayed price when with vat/without vat set on WooCommerce * Add - Option to change cart products image ratio = Version - 3.2.1 = * Fix - Upsell issue when changing type (variable, simple, etc..) of the underlying product = Version - 3.2.0 = * Add - Add negation option for in cart products and categories/attributes conditions = Version - 3.1.8 = * Fix - Css fix if the upsell description is higher than container's height = Version - 3.1.2 = * Add - Option to keep the upsell in cart (if added) even if conditions are not met anymore = Version - 3.0.69 = * Fix - VAT not calculated on modal cart shipping row = Version - 3.0.6 = * Add - Option too choose if clicking an upsell should add it to cart or redirect the customer to the product page = Version - 3.0.3 = * Fix - Fix dynamic bar to match woocommerce decimals = Version - 3.0.0 = * Add - Polylang compatibility * Fix - Code improvement = Version - 2.9.7 = * Add - Added option to display coupon code input in the modal cart * Fix - Minor bug fixes = Version - 2.9.5 = * Add - Empty modal and modal footer buttons are now templates, so you can override them * Add - New display mode, in the style tabs, small, to make the modal cart smaller = Version - 2.9.3 = * Fix - Full cart page upsells not working when background mode is active = Version - 2.9.2 = * Fix - Full cart page upsells not working when only background enabled = Version - 2.9.0 = * Add - Official WooCommerce Product Bundles plugin compatibility * Fix - Gifts now are displayed at the end = Version - 2.8.8 = * New - (Premium version) Advanced upsell stats * Add - Hover color option for modal buttons * Add - Advanced upsells stats (premium only) * Add - WPC Product Bundles compatibility = Version - 2.8.4 = * Change - Stats page made in ajax, with more data = Version - 2.8.2 = * Add - Exclude gift if same product already in cart as normal product = Version - 2.8.1 = * Add - Max quantity option if allowed quantity change for an upsell * Fix - Carousel not working in full cart page = Version - 2.8.0 = * Add - Before submit button hook for cart page upsells * Fix - Carousel not working in full cart page = Version - 2.7.8 = * Fix - Code improvement * Fix - Fixed bug that allowed to display upsells even if not enough stock * Beta - Add beta option to display WC notices on modal cart, without page redirect = Version - 2.7.5 = * Fix - Add filter to fix urlencoded attributes in some languages = Version - 2.7.4 = * Fix - Full cart page upsells not working = Version - 2.7.3 = * Fix - Fix modal cart auto-open when saving with Elementor builder * Add - Added wjufw_upsell_is_valid filter = Version - 2.6.7 = * Add - Option to exclude upsell if same product already in cart as gift * Bug - Cart total ( for upsells and gifts ) calculated based on applied discount = Version - 2.6.0 = * Add - Search filter in the excluded pages section * Add - New option for upsells: sold individually = Version - 2.5.7 = * Change - Recoded the excluded pages section = Version - 2.5.2 = * Change - Dynamic bar re-code * Add - Dynamic bar multiple goals * Add - More dynamic bar icons * Add - Option to disable quantity selector on modal = Version - 2.1.7 = * Fix - WooCommerce 6.4 compatibility * Fix - Dynamic Bar bug = Version - 2.1.6 = * Fix - Fixed discount bug when "prevent upsell discount" activated = Version - 2.1.5 = * Add - Full cart page upsells = Version - 2.1.3 = * Add - Support for WooCommerce 6.3.1 * Add - Support for Wordpress 5.9.2 = Version - 2.1.2 = * Add - Checkout upsell position switcher ( PRO ) * Add - Option to exclude upsell from coupons discount * Add - Option too choose max number of upsells displayed when "stacked" selected = Version - 2.0.1 = * Fix - Compatibility with "Advanced product fields for WooCommerce" * Add - Upsell quantity = Version - 1.67.0 = * Add - "woo-j-gift" and "woo-j-upsell" classes to cart page items when they are .. gifts and upsells! * Add - Filter to display or not the dynamic bar - 'wjufw_dynamic_bar_display' = Version - 1.66.0 = * Fix - Fix dynamic bar calculation when woocommerce decimal and thousands separator edited = Version - 1.65.5 = * Add - Prices displayed in accord to WooCommerce settings - decimal separator, thousands separator, .. = Version - 1.65.0 = * Add - WordPress 5.9 compatibility * Add - WooCommerce 6.1 compatibility = Version - 1.62.5 = * Add - Modal cart header css change = Version - 1.62.0 = * Fix - Bug in "add to cart single page" script * Add - Compatibility with official "Woocommerce Composite Products" plugin = Version - 1.61.1 = * Fix - Bug in "add to cart single page" script * Add - Option to choose between "single upsell" - "carousel" - "stacked upsells" = Version - 1.60.1 = * Add - WooCommerce 6.0.0 compatibility = Version - 1.60.0 = * Add - option to use J Cart Upsell and Cross-sell only as background logic * Add - option to change quantity of gifted product = Version - 1.60.0 = Premium * Fix - fixed a bug when coupon option set and then removed = Version - 1.58.9 = * Add - small css changes * Add - new dynamic bar style = Version - 1.58.0 = * Premium only - added option to trigger gifts only if a certain coupon is applied = Version - 1.55.0 = * Add Request - added option to trigger gifts/upsells only if user is logged = Version - 1.52.0 = * Add Request - added option to exclude virtual product to the cart count limit that triggers gifts * thanks to Carl for the suggestion = Version - 1.51.0 = * Fix - fixed a bug when calculating products taxes * Add - filter to change cart item name -- apply_filters( 'wjufw_cart_item_name', $product->get_name(), $product, $product['key'] ) = Version - 1.50.4 = This is a major change * Enhancement - Code refactoring * Add - filter to change dynamic bar limit -- apply_filters( 'wjufw_shipping_bar_limit', $limit, $limit ) * Add - Compatibility to currency exchange plugin ( WOOCS - WooCommerce Currency Switcher ) * Add - Synchronized prices with WooCommerce VAT settings: product prices with/without taxes, product displayed with/without taxes on cart = Version - 1.30.3 = * Add - Option to choose currency position: before or after price * Add - Option to change modal cart header text * Add - Option to show or not upsell label if condition set to "no discount" * Fix - Fixed css input number bug for Firefox = Version - 1.25.3 = * Enhancement - Upsells/Gifts edit now via AJAX = Version - 1.21.5 = * Add - Added option to show multiple upsells at time, via carousel * Add - Added option to display a random upsell when multiple are triggered = Version - 1.15 = * Add - Added CSS hook to dynamic bar price = Version - 1.14 = * Fix - Issue with VAT on subtotal. Added option to change between WC()->cart->subtotal and WC()->cart->get_subtotal() in the main option page = Version - 1.13 = * Add - Shortcodes tab with a new shortcode for a dynamic items counter * Fix - Issue when adding to cart products with price as zero ( free ) * Change - Changed "shipping bar" to "dynamic bar" = Version - 1.11 = * Add - Added modal cart custom logo upload = Version - 1.10 = * Fix - Decimal issue in the modal footer = Version - 1.09 = * Add - Added actions to better customize single product page when triggering gift - do_action('wjufw_before_single_product_gift_text', $gift_product_id ); - do_action('wjufw_after_single_product_gift_text', $gift_product_id ); * Fix - Ignoring trashed orders from stats page * Fix - Adjusted stats charts when viewport smaller than 1300px * Fix - Rounded decimals on stats page = Version - 1.08 = * Add - Added subtotal condition as a default condition for every upsell/gift = Version - 1.07 = * Add - Redirect to cart page cliclikg on .wc-j-upsellator-show-cart class if plugin not loaded on that page = Version - 1.05 = * Add - Pause / Start on upsells and gifts * Add - Modal cart logo theme = Version - 1.04 = * Fix - Fixed upsell displayed price = Version - 1.03 = * Add - Added go to cart button option = Version - 1.02 = * CSS Fix for stats page = Version - 0.99.45 = * Stable version = Version - 0.99.45 = * Enhancement - Merged attributes and categories conditions for complex filters = Version - 0.99.2 = * Add - Added upsell priority * Fix - Fixed a bug when deleting a product from woocommerce used as gift * Fix - CSS letter-spacing fix