Changeset 3474761
- Timestamp:
- 03/04/2026 05:21:33 PM (3 weeks ago)
- Location:
- instantio
- Files:
-
- 272 added
- 4 edited
-
tags/3.3.31 (added)
-
tags/3.3.31/admin (added)
-
tags/3.3.31/admin/tf-options (added)
-
tags/3.3.31/admin/tf-options/Ins_TF_Options.php (added)
-
tags/3.3.31/admin/tf-options/assets (added)
-
tags/3.3.31/admin/tf-options/assets/css (added)
-
tags/3.3.31/admin/tf-options/assets/css/tf-options.css (added)
-
tags/3.3.31/admin/tf-options/assets/css/tf-options.css.map (added)
-
tags/3.3.31/admin/tf-options/assets/css/tf-options.min.css (added)
-
tags/3.3.31/admin/tf-options/assets/css/tf-options.scss (added)
-
tags/3.3.31/admin/tf-options/assets/img (added)
-
tags/3.3.31/admin/tf-options/assets/img/circle1.svg (added)
-
tags/3.3.31/admin/tf-options/assets/img/circlecompa.svg (added)
-
tags/3.3.31/admin/tf-options/assets/img/circlefix.svg (added)
-
tags/3.3.31/admin/tf-options/assets/img/circlenew.svg (added)
-
tags/3.3.31/admin/tf-options/assets/img/circleopti.svg (added)
-
tags/3.3.31/admin/tf-options/assets/js (added)
-
tags/3.3.31/admin/tf-options/assets/js/admin.js (added)
-
tags/3.3.31/admin/tf-options/assets/js/dashboard.js (added)
-
tags/3.3.31/admin/tf-options/assets/js/ins-options.js (added)
-
tags/3.3.31/admin/tf-options/assets/js/required-taxonomies-gutenberg.js (added)
-
tags/3.3.31/admin/tf-options/assets/js/required-taxonomies.js (added)
-
tags/3.3.31/admin/tf-options/assets/js/setup-wizard.js (added)
-
tags/3.3.31/admin/tf-options/assets/libs (added)
-
tags/3.3.31/admin/tf-options/assets/libs/notyf (added)
-
tags/3.3.31/admin/tf-options/assets/libs/notyf/notyf.min.css (added)
-
tags/3.3.31/admin/tf-options/assets/libs/notyf/notyf.min.js (added)
-
tags/3.3.31/admin/tf-options/assets/sass (added)
-
tags/3.3.31/admin/tf-options/assets/sass/common (added)
-
tags/3.3.31/admin/tf-options/assets/sass/common/_checkouteditor.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/common/_dashboard.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/common/_fileds.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/common/_mixin.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/common/_setup-wizard.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/common/_tabs.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/common/_variable.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_checkbox.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_color.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_date.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_fieldset.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_gallery.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_heading.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_icon.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_image.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_imageseletor.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_map.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_notice.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_number.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_radio.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_repeater.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_select.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_select2.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_switch.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_tab.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_text.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_textarea.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/fields/_time.scss (added)
-
tags/3.3.31/admin/tf-options/assets/sass/tf-options.css (added)
-
tags/3.3.31/admin/tf-options/assets/sass/tf-options.css.map (added)
-
tags/3.3.31/admin/tf-options/assets/sass/tf-options.min.css (added)
-
tags/3.3.31/admin/tf-options/assets/sass/tf-options.scss (added)
-
tags/3.3.31/admin/tf-options/classes (added)
-
tags/3.3.31/admin/tf-options/classes/INS_Metabox.php (added)
-
tags/3.3.31/admin/tf-options/classes/Ins_ChangeLog.php (added)
-
tags/3.3.31/admin/tf-options/classes/Ins_TF_Settings.php (added)
-
tags/3.3.31/admin/tf-options/classes/TF_Taxonomy_Metabox.php (added)
-
tags/3.3.31/admin/tf-options/fields (added)
-
tags/3.3.31/admin/tf-options/fields/INS_Fields.php (added)
-
tags/3.3.31/admin/tf-options/fields/callback (added)
-
tags/3.3.31/admin/tf-options/fields/callback/INS_callback.php (added)
-
tags/3.3.31/admin/tf-options/fields/checkbox (added)
-
tags/3.3.31/admin/tf-options/fields/checkbox/INS_checkbox.php (added)
-
tags/3.3.31/admin/tf-options/fields/code_editor (added)
-
tags/3.3.31/admin/tf-options/fields/code_editor/INS_codeeditor.php (added)
-
tags/3.3.31/admin/tf-options/fields/color (added)
-
tags/3.3.31/admin/tf-options/fields/color/INS_color.php (added)
-
tags/3.3.31/admin/tf-options/fields/date (added)
-
tags/3.3.31/admin/tf-options/fields/date/INS_date.php (added)
-
tags/3.3.31/admin/tf-options/fields/editor (added)
-
tags/3.3.31/admin/tf-options/fields/editor/INS_editor.php (added)
-
tags/3.3.31/admin/tf-options/fields/fieldset (added)
-
tags/3.3.31/admin/tf-options/fields/fieldset/INS_fieldset.php (added)
-
tags/3.3.31/admin/tf-options/fields/file (added)
-
tags/3.3.31/admin/tf-options/fields/file/INS_file.php (added)
-
tags/3.3.31/admin/tf-options/fields/gallery (added)
-
tags/3.3.31/admin/tf-options/fields/gallery/INS_gallery.php (added)
-
tags/3.3.31/admin/tf-options/fields/heading (added)
-
tags/3.3.31/admin/tf-options/fields/heading/INS_heading.php (added)
-
tags/3.3.31/admin/tf-options/fields/icon (added)
-
tags/3.3.31/admin/tf-options/fields/icon/INS_icon.php (added)
-
tags/3.3.31/admin/tf-options/fields/image (added)
-
tags/3.3.31/admin/tf-options/fields/image/INS_image.php (added)
-
tags/3.3.31/admin/tf-options/fields/imageselect (added)
-
tags/3.3.31/admin/tf-options/fields/imageselect/INS_imageselect.php (added)
-
tags/3.3.31/admin/tf-options/fields/map (added)
-
tags/3.3.31/admin/tf-options/fields/map/INS_map.php (added)
-
tags/3.3.31/admin/tf-options/fields/notice (added)
-
tags/3.3.31/admin/tf-options/fields/notice/INS_notice.php (added)
-
tags/3.3.31/admin/tf-options/fields/number (added)
-
tags/3.3.31/admin/tf-options/fields/number/INS_number.php (added)
-
tags/3.3.31/admin/tf-options/fields/radio (added)
-
tags/3.3.31/admin/tf-options/fields/radio/INS_radio.php (added)
-
tags/3.3.31/admin/tf-options/fields/repeater (added)
-
tags/3.3.31/admin/tf-options/fields/repeater/INS_Repeater.php (added)
-
tags/3.3.31/admin/tf-options/fields/select (added)
-
tags/3.3.31/admin/tf-options/fields/select/INS_select.php (added)
-
tags/3.3.31/admin/tf-options/fields/select2 (added)
-
tags/3.3.31/admin/tf-options/fields/select2/INS_select2.php (added)
-
tags/3.3.31/admin/tf-options/fields/switch (added)
-
tags/3.3.31/admin/tf-options/fields/switch/INS_switch.php (added)
-
tags/3.3.31/admin/tf-options/fields/tab (added)
-
tags/3.3.31/admin/tf-options/fields/tab/INS_tab.php (added)
-
tags/3.3.31/admin/tf-options/fields/text (added)
-
tags/3.3.31/admin/tf-options/fields/text/INS_text.php (added)
-
tags/3.3.31/admin/tf-options/fields/textarea (added)
-
tags/3.3.31/admin/tf-options/fields/textarea/INS_textarea.php (added)
-
tags/3.3.31/admin/tf-options/fields/time (added)
-
tags/3.3.31/admin/tf-options/fields/time/INS_time.php (added)
-
tags/3.3.31/admin/tf-options/img (added)
-
tags/3.3.31/admin/tf-options/img/Play.png (added)
-
tags/3.3.31/admin/tf-options/img/cart-1.svg (added)
-
tags/3.3.31/admin/tf-options/img/cart-2.svg (added)
-
tags/3.3.31/admin/tf-options/img/cart-3.svg (added)
-
tags/3.3.31/admin/tf-options/img/cart-4.svg (added)
-
tags/3.3.31/admin/tf-options/img/cart-style-1.svg (added)
-
tags/3.3.31/admin/tf-options/img/feature-selection.png (added)
-
tags/3.3.31/admin/tf-options/img/instanio-logo.png (added)
-
tags/3.3.31/admin/tf-options/img/instantio.png (added)
-
tags/3.3.31/admin/tf-options/img/layout (added)
-
tags/3.3.31/admin/tf-options/img/layout/CartCheckout.svg (added)
-
tags/3.3.31/admin/tf-options/img/layout/Dark.png (added)
-
tags/3.3.31/admin/tf-options/img/layout/Directcheckout.jpg (added)
-
tags/3.3.31/admin/tf-options/img/layout/GlassMorphism.png (added)
-
tags/3.3.31/admin/tf-options/img/layout/Gradient.png (added)
-
tags/3.3.31/admin/tf-options/img/layout/Light.png (added)
-
tags/3.3.31/admin/tf-options/img/layout/Popup.jpg (added)
-
tags/3.3.31/admin/tf-options/img/layout/sidecart.jpg (added)
-
tags/3.3.31/admin/tf-options/img/layout/toggler-1.svg (added)
-
tags/3.3.31/admin/tf-options/img/layout/toggler-2.svg (added)
-
tags/3.3.31/admin/tf-options/img/layout/version1.png (added)
-
tags/3.3.31/admin/tf-options/img/layout/version2.png (added)
-
tags/3.3.31/admin/tf-options/img/layout/version3.png (added)
-
tags/3.3.31/admin/tf-options/img/layout/version4.png (added)
-
tags/3.3.31/admin/tf-options/img/premium1.jpg (added)
-
tags/3.3.31/admin/tf-options/img/pro (added)
-
tags/3.3.31/admin/tf-options/img/pro/Cross-Sell.jpg (added)
-
tags/3.3.31/admin/tf-options/img/pro/Dedicated-Mobile-Layout.png (added)
-
tags/3.3.31/admin/tf-options/img/pro/Popup-CartCheckout-Pro-Multi-Step.jpg (added)
-
tags/3.3.31/admin/tf-options/img/pro/Popup-CartCheckout-Pro-Single-Step.jpg (added)
-
tags/3.3.31/admin/tf-options/img/pro/Side-CartCheckout-Pro-Multi-Step.jpg (added)
-
tags/3.3.31/admin/tf-options/img/pro/Side-CartCheckout-Pro-Single-Step.jpg (added)
-
tags/3.3.31/admin/tf-options/img/pro/Up-Sell.jpg (added)
-
tags/3.3.31/admin/tf-options/img/tutorial-1.png (added)
-
tags/3.3.31/admin/tf-options/img/tutorial-2.png (added)
-
tags/3.3.31/admin/tf-options/img/tutorial.png (added)
-
tags/3.3.31/admin/tf-options/img/wizard (added)
-
tags/3.3.31/admin/tf-options/img/wizard/quikfinal.png (added)
-
tags/3.3.31/admin/tf-options/img/wizard/setup_wizard_bg.png (added)
-
tags/3.3.31/admin/tf-options/img/wizard/tf-documents.svg (added)
-
tags/3.3.31/admin/tf-options/img/wizard/tf-mail.svg (added)
-
tags/3.3.31/admin/tf-options/img/wizard/tf-tutorial.svg (added)
-
tags/3.3.31/admin/tf-options/metaboxes (added)
-
tags/3.3.31/admin/tf-options/metaboxes/tf-metabox.php (added)
-
tags/3.3.31/admin/tf-options/options (added)
-
tags/3.3.31/admin/tf-options/options/tf-menu-icon.php (added)
-
tags/3.3.31/admin/tf-options/options/tf-settings.php (added)
-
tags/3.3.31/assets (added)
-
tags/3.3.31/assets/admin (added)
-
tags/3.3.31/assets/admin/css (added)
-
tags/3.3.31/assets/admin/css/instantio-admin-style.css (added)
-
tags/3.3.31/assets/admin/js (added)
-
tags/3.3.31/assets/admin/js/instantio-admin-script.js (added)
-
tags/3.3.31/assets/app (added)
-
tags/3.3.31/assets/app/css (added)
-
tags/3.3.31/assets/app/css/instantio-style.css (added)
-
tags/3.3.31/assets/app/css/instantio-style.css.map (added)
-
tags/3.3.31/assets/app/css/instantio-style.min.css (added)
-
tags/3.3.31/assets/app/css/instantio-style.scss (added)
-
tags/3.3.31/assets/app/img (added)
-
tags/3.3.31/assets/app/img/cursor-x.png (added)
-
tags/3.3.31/assets/app/js (added)
-
tags/3.3.31/assets/app/js/gsap.min.js (added)
-
tags/3.3.31/assets/app/js/instantio-script.js (added)
-
tags/3.3.31/assets/app/js/instantio-script.min.js (added)
-
tags/3.3.31/assets/app/sass (added)
-
tags/3.3.31/assets/app/sass/components (added)
-
tags/3.3.31/assets/app/sass/components/_animation.scss (added)
-
tags/3.3.31/assets/app/sass/components/_cart-contents.scss (added)
-
tags/3.3.31/assets/app/sass/components/_common.scss (added)
-
tags/3.3.31/assets/app/sass/components/_layout_mode.scss (added)
-
tags/3.3.31/assets/app/sass/components/_layouts.scss (added)
-
tags/3.3.31/assets/app/sass/components/_mini-cart.scss (added)
-
tags/3.3.31/assets/app/sass/components/_responsive.scss (added)
-
tags/3.3.31/assets/app/sass/components/_theme_compatibility.scss (added)
-
tags/3.3.31/assets/app/sass/components/_toggle.scss (added)
-
tags/3.3.31/assets/app/sass/components/_variable.scss (added)
-
tags/3.3.31/assets/app/sass/instantio-style.css (added)
-
tags/3.3.31/assets/app/sass/instantio-style.css.map (added)
-
tags/3.3.31/assets/app/sass/instantio-style.min.css (added)
-
tags/3.3.31/assets/app/sass/instantio-style.scss (added)
-
tags/3.3.31/assets/img (added)
-
tags/3.3.31/assets/img/BLACK_FRIDAY_BACKGROUND_GRUNGE_notice.png (added)
-
tags/3.3.31/assets/img/blackfriday_sidebanner.png (added)
-
tags/3.3.31/assets/img/delete.png (added)
-
tags/3.3.31/functions.php (added)
-
tags/3.3.31/includes (added)
-
tags/3.3.31/includes/app (added)
-
tags/3.3.31/includes/app/.php-cs-fixer.dist.php (added)
-
tags/3.3.31/includes/app/composer.json (added)
-
tags/3.3.31/includes/app/phpcs.xml.dist (added)
-
tags/3.3.31/includes/app/src (added)
-
tags/3.3.31/includes/app/src/Client.php (added)
-
tags/3.3.31/includes/app/src/Insights.php (added)
-
tags/3.3.31/includes/app/src/License.php (added)
-
tags/3.3.31/includes/app/src/Updater.php (added)
-
tags/3.3.31/includes/controller (added)
-
tags/3.3.31/includes/controller/Admin.php (added)
-
tags/3.3.31/includes/controller/App.php (added)
-
tags/3.3.31/includes/controller/Assets.php (added)
-
tags/3.3.31/includes/controller/checkout_editor.php (added)
-
tags/3.3.31/includes/controller/class-helper-banner.php (added)
-
tags/3.3.31/includes/controller/class-promo-notice.php (added)
-
tags/3.3.31/includes/controller/class-setup-wizard.php (added)
-
tags/3.3.31/includes/controller/icon-svg.php (added)
-
tags/3.3.31/includes/controller/ins-checkout-editor.php (added)
-
tags/3.3.31/includes/layouts (added)
-
tags/3.3.31/includes/layouts/layout-1.php (added)
-
tags/3.3.31/includes/layouts/layout-2.php (added)
-
tags/3.3.31/includes/layouts/layout-3.php (added)
-
tags/3.3.31/includes/templates (added)
-
tags/3.3.31/includes/templates/cart-modern.php (added)
-
tags/3.3.31/includes/templates/ins_single_step_cart.php (added)
-
tags/3.3.31/instantio.php (added)
-
tags/3.3.31/lang (added)
-
tags/3.3.31/lang/instantio-ar.mo (added)
-
tags/3.3.31/lang/instantio-ar.po (added)
-
tags/3.3.31/lang/instantio-bn_BD.mo (added)
-
tags/3.3.31/lang/instantio-bn_BD.po (added)
-
tags/3.3.31/lang/instantio-de_DE.mo (added)
-
tags/3.3.31/lang/instantio-de_DE.po (added)
-
tags/3.3.31/lang/instantio-es_ES.mo (added)
-
tags/3.3.31/lang/instantio-es_ES.po (added)
-
tags/3.3.31/lang/instantio-fr_BE.mo (added)
-
tags/3.3.31/lang/instantio-fr_BE.po (added)
-
tags/3.3.31/lang/instantio-fr_FR.mo (added)
-
tags/3.3.31/lang/instantio-fr_FR.po (added)
-
tags/3.3.31/lang/instantio-hi_IN.mo (added)
-
tags/3.3.31/lang/instantio-hi_IN.po (added)
-
tags/3.3.31/lang/instantio-it_IT.mo (added)
-
tags/3.3.31/lang/instantio-it_IT.po (added)
-
tags/3.3.31/lang/instantio-nl_NL.mo (added)
-
tags/3.3.31/lang/instantio-nl_NL.po (added)
-
tags/3.3.31/lang/instantio-ru_RU.mo (added)
-
tags/3.3.31/lang/instantio-ru_RU.po (added)
-
tags/3.3.31/lang/instantio-zh_CN.mo (added)
-
tags/3.3.31/lang/instantio-zh_CN.po (added)
-
tags/3.3.31/lang/instantio.pot (added)
-
tags/3.3.31/readme.txt (added)
-
tags/3.3.31/vendor (added)
-
tags/3.3.31/vendor/autoload.php (added)
-
tags/3.3.31/vendor/composer (added)
-
tags/3.3.31/vendor/composer/ClassLoader.php (added)
-
tags/3.3.31/vendor/composer/InstalledVersions.php (added)
-
tags/3.3.31/vendor/composer/LICENSE (added)
-
tags/3.3.31/vendor/composer/autoload_classmap.php (added)
-
tags/3.3.31/vendor/composer/autoload_namespaces.php (added)
-
tags/3.3.31/vendor/composer/autoload_psr4.php (added)
-
tags/3.3.31/vendor/composer/autoload_real.php (added)
-
tags/3.3.31/vendor/composer/autoload_static.php (added)
-
tags/3.3.31/vendor/composer/installed.json (added)
-
tags/3.3.31/vendor/composer/installed.php (added)
-
trunk/assets/app/js/instantio-script.js (modified) (3 diffs)
-
trunk/includes/controller/App.php (modified) (2 diffs)
-
trunk/instantio.php (modified) (2 diffs)
-
trunk/readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
instantio/trunk/assets/app/js/instantio-script.js
r3136060 r3474761 323 323 cart_form = thisbutton.closest("form.cart"), 324 324 id = thisbutton.val(), 325 product_id = cart_form.find("input[name=product_id]").val() || id,325 product_id = cart_form.find("input[name=product_id]").val() || cart_form.find("input[name=add-to-cart]").val() || id, 326 326 product_qty = cart_form.find("input[name=quantity]").val() || 1, 327 variation_id = cart_form.find("input[name=variation_id]").val() || 0; 327 variation_id = cart_form.find("input[name=variation_id]").val() || 0, 328 asnp_wepb_items = cart_form.find("input[name=asnp_wepb_items]").val() || ''; 328 329 329 330 if (cart_form.find("input[name=variation_id]").length > 0) { … … 332 333 } 333 334 } 335 336 var grouped_data = {}; 337 338 cart_form.find('input[name^="quantity["]').each(function () { 339 var name = $(this).attr('name'); // quantity[123] 340 var matches = name.match(/\[(\d+)\]/); 341 342 if (matches) { 343 var child_id = matches[1]; 344 var qty = $(this).val(); 345 346 if (qty > 0) { 347 grouped_data[child_id] = qty; 348 } 349 } 350 }); 334 351 335 352 $.ajax({ … … 338 355 data: { 339 356 action: "ins_ajax_cart_single", 357 nonce: ins_params.ins_ajax_nonce, 340 358 product_id: product_id, 341 quantity: product_qty,359 quantity: Object.keys(grouped_data).length ? grouped_data : product_qty, 342 360 variation_id: variation_id, 361 asnp_wepb_items: asnp_wepb_items 343 362 }, 344 363 beforeSend: function (response) { -
instantio/trunk/includes/controller/App.php
r3313912 r3474761 395 395 } 396 396 397 // Ajax Single Page Add to Cart398 397 public function ins_ajax_cart_single() { 399 $product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $_POST['product_id'] ) ); 398 399 if ( ! isset( $_POST['nonce'] ) || 400 ! wp_verify_nonce( $_POST['nonce'], 'ins_ajax_nonce' ) ) { 401 wp_send_json( [ 'error' => true ] ); 402 } 403 404 if ( ! isset( $_POST['product_id'] ) ) { 405 wp_send_json( [ 'error' => true ] ); 406 } 407 408 $product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $_POST['product_id'] ) ); 409 $variation_id = isset( $_POST['variation_id'] ) ? absint( $_POST['variation_id'] ) : 0; 410 $product = wc_get_product( $product_id ); 411 412 if ( ! $product || get_post_status( $product_id ) !== 'publish' ) { 413 wp_send_json( [ 'error' => true ] ); 414 } 415 416 $product_status = get_post_status( $product_id ); 417 418 // GROUPED PRODUCT HANDLING 419 if ( $product->is_type( 'grouped' ) ) { 420 421 $added = false; 422 423 if ( ! empty( $_POST['quantity'] ) && is_array( $_POST['quantity'] ) ) { 424 425 foreach ( $_POST['quantity'] as $child_id => $qty ) { 426 427 $child_id = absint( $child_id ); 428 $qty = wc_stock_amount( $qty ); 429 430 if ( $qty <= 0 ) { 431 continue; 432 } 433 434 $passed_validation = apply_filters( 435 'woocommerce_add_to_cart_validation', 436 true, 437 $child_id, 438 $qty 439 ); 440 441 if ( $passed_validation && get_post_status( $child_id ) === 'publish' ) { 442 443 $cart_item_key = WC()->cart->add_to_cart( $child_id, $qty ); 444 445 if ( $cart_item_key ) { 446 $added = true; 447 do_action( 'woocommerce_ajax_added_to_cart', $child_id ); 448 } 449 } 450 } 451 } 452 453 if ( $added ) { 454 455 if ( get_option( 'woocommerce_cart_redirect_after_add' ) === 'yes' ) { 456 wc_add_to_cart_message( array( $product_id => 1 ), true ); 457 } 458 459 $this->ins_ajax_cart_reload(); 460 } 461 462 wp_send_json( [ 463 'error' => true, 464 'product_url' => apply_filters( 465 'woocommerce_cart_redirect_after_error', 466 get_permalink( $product_id ), 467 $product_id 468 ) 469 ] ); 470 } 471 472 // EASY PRODUCT BUNDLE (Manual Add Like Grouped) 473 if ( $product->get_type() === 'easy_product_bundle' ) { 474 475 $added = false; 476 $main_qty = ! empty( $_POST['quantity'] ) ? wc_stock_amount( $_POST['quantity'] ) : 1; 477 478 if ( ! empty( $_POST['asnp_wepb_items'] ) ) { 479 480 $items = json_decode( wp_unslash( $_POST['asnp_wepb_items'] ), true ); 481 482 if ( is_array( $items ) ) { 483 484 foreach ( $items as $item ) { 485 486 $child_id = isset( $item['id'] ) ? absint( $item['id'] ) : 0; 487 $child_qty = isset( $item['qty'] ) ? wc_stock_amount( $item['qty'] ) : 0; 488 $attributes = isset( $item['attributes'] ) ? (array) $item['attributes'] : []; 489 490 if ( $child_id <= 0 || $child_qty <= 0 ) { 491 continue; 492 } 493 494 $child_product = wc_get_product( $child_id ); 495 496 if ( ! $child_product || get_post_status( $child_id ) !== 'publish' ) { 497 continue; 498 } 499 500 $total_qty = $child_qty * $main_qty; 501 502 $variation_id = 0; 503 $variation_data = []; 504 505 /* 506 |-------------------------------------------------------------------------- 507 | Handle Variable Products 508 |-------------------------------------------------------------------------- 509 */ 510 if ( $child_product->is_type( 'variable' ) && ! empty( $attributes ) ) { 511 512 $variation_data = []; 513 514 foreach ( $attributes as $attr_key => $attr_value ) { 515 516 // Convert to proper WooCommerce format 517 $taxonomy = wc_attribute_taxonomy_name( $attr_key ); 518 519 if ( taxonomy_exists( $taxonomy ) ) { 520 $variation_data[ 'attribute_' . $taxonomy ] = sanitize_title( $attr_value ); 521 } else { 522 $variation_data[ 'attribute_' . sanitize_title( $attr_key ) ] = sanitize_title( $attr_value ); 523 } 524 } 525 526 // Find matching variation 527 $data_store = \WC_Data_Store::load( 'product' ); 528 $variation_id = $data_store->find_matching_product_variation( 529 $child_product, 530 $variation_data 531 ); 532 } 533 534 $price = $child_product->get_price(); 535 536 $cart_item_data = [ 537 'custom_bundle_price' => $price, 538 ]; 539 540 $cart_item_key = WC()->cart->add_to_cart( 541 $child_id, 542 $total_qty, 543 $variation_id, 544 $variation_data, 545 $cart_item_data 546 ); 547 548 if ( $cart_item_key ) { 549 $added = true; 550 do_action( 'woocommerce_ajax_added_to_cart', $child_id ); 551 } 552 } 553 } 554 } 555 556 if ( $added ) { 557 558 if ( get_option( 'woocommerce_cart_redirect_after_add' ) === 'yes' ) { 559 wc_add_to_cart_message( array( $product_id => $main_qty ), true ); 560 } 561 562 $this->ins_ajax_cart_reload(); 563 } 564 565 wp_send_json( [ 566 'error' => true, 567 'product_url' => get_permalink( $product_id ) 568 ] ); 569 } 570 571 // SIMPLE / VARIABLE PRODUCTS 400 572 $quantity = empty( $_POST['quantity'] ) ? 1 : wc_stock_amount( $_POST['quantity'] ); 401 $variation_id = absint( $_POST['variation_id'] ); 402 $passed_validation = apply_filters( 'woocommerce_add_to_cart_validation', true, $product_id, $quantity ); 403 $product_status = get_post_status( $product_id ); 404 405 if ( $passed_validation && WC()->cart->add_to_cart( $product_id, $quantity, $variation_id ) && $product_status === 'publish' ) { 573 574 $passed_validation = apply_filters( 575 'woocommerce_add_to_cart_validation', 576 true, 577 $product_id, 578 $quantity, 579 $variation_id 580 ); 581 582 if ( 583 $passed_validation && 584 $product_status === 'publish' && 585 WC()->cart->add_to_cart( $product_id, $quantity, $variation_id ) 586 ) { 406 587 407 588 do_action( 'woocommerce_ajax_added_to_cart', $product_id ); … … 412 593 413 594 $this->ins_ajax_cart_reload(); 414 415 } else { 416 $data = array( 417 'error' => true, 418 'product_url' => apply_filters( 'woocommerce_cart_redirect_after_error', get_permalink( $product_id ), $product_id ) ); 419 420 echo wp_send_json( $data ); 421 } 422 wp_die(); 595 } 596 597 wp_send_json( [ 598 'error' => true, 599 'product_url' => apply_filters( 600 'woocommerce_cart_redirect_after_error', 601 get_permalink( $product_id ), 602 $product_id 603 ) 604 ] ); 423 605 } 424 606 -
instantio/trunk/instantio.php
r3456279 r3474761 9 9 * Author URI: https://themefic.com 10 10 * Tags: woocommerce cart, woocommerce checkout, woocommerce direct checkout, multistep checkout, woocommerce side cart 11 * Version: 3.3.3 011 * Version: 3.3.31 12 12 * Tested up to: 6.9 13 13 * Requires PHP: 7.4 … … 35 35 private function define_constants() { 36 36 if ( ! defined( 'INSTANTIO_VERSION' ) ) { 37 define( 'INSTANTIO_VERSION', '3.3.3 0' );37 define( 'INSTANTIO_VERSION', '3.3.31' ); 38 38 } 39 39 define( 'INS_URL', plugin_dir_url( __FILE__ ) ); -
instantio/trunk/readme.txt
r3456279 r3474761 4 4 Requires at least: 4.0 5 5 Tested up to: 6.9 6 Stable tag: 3.3.3 06 Stable tag: 3.3.31 7 7 WC requires at least: 7.0 8 8 WC tested up to: 10.5 … … 376 376 == Changelog == 377 377 378 = 3.3.31 – March 04, 2026 = 379 380 - New: Group Product Add to Cart support. 381 - New: Bundler Product Add to Cart compatibility. 382 - Improvement: Security enhancements implemented. 383 378 384 = 3.3.30 – February 08, 2026 = 379 385
Note: See TracChangeset
for help on using the changeset viewer.