Support » Plugin: WooCommerce » Order placed without Variations

  • Resolved alexqbox

    (@alexqbox)


    Since 2-3 weeks about 2% of all orders missing variations after order received. I tried to debug it in many ways without success. I see that these false orders got in the system with value 0 for the variation ID and just show the main product instead with wrong price of course. It happens about once per week.

    The installation is up to date at all.

    I have no idea why only maybe 2% got this problem but 98% of all orders are fine included the correct variation ids. The belonging products changes all the times so i can’t say it depends on one product only.

    The variations are just created in the normal way through woocommerce without any extra plugin involved. I don’t know what makes the variation ID become 0 at this point although the product has a setup with variations only.

    Any ideas or bugfixes on that issue?

    Many Thanks!

    • This topic was modified 8 months, 1 week ago by alexqbox.

    The page I need help with: [log in to see the link]

Viewing 14 replies - 1 through 14 (of 14 total)
  • Plugin Support Ross V. a11n

    (@rossviviano)

    Automattic Happiness Engineer

    Hi there,

    This is a bug that the developers are currently discussing; you can follow along here- https://github.com/woocommerce/woocommerce/issues/27756

    In the meantime, installing this plugin should stop this from happening again:

    https://wordpress.org/plugins/enable-jquery-migrate-helper/

    Best,

    Ross

    Thread Starter alexqbox

    (@alexqbox)

    Thanks for reply! The Enable jquery migration helper plugin is already installed since i updated to WP 5.5 to prevent those bugs. But it doesn’t help completely it seems.

    Any other short fix for the moment or do i need to wait for an future update of woocommerce?

    Thanks!

    Plugin Support Ross V. a11n

    (@rossviviano)

    Automattic Happiness Engineer

    Hi again,

    At the moment, if the Enable jquery migration helper plugin is already installed and you’re still seeing the issue, waiting for an update is best, I’m afraid to say.

    Ross

    Thread Starter alexqbox

    (@alexqbox)

    Hello again,

    this topic is NOT RESOLVED

    2 days ago i had Woocommerce updated to 4.6.0 and was really hoping this bug is resolved. It’s NOT unfortunately. The same problem still exists. Some orders are created with the main product instead of the variation. So it takes the wrong order id from the main product and the wrong price instead of the order variation id and the belonging price of it.

    Here you can see the issue. The marked products are wrong and not even purchasable in the shop like that.

    https://ibb.co/4NyFcLv

    I really please you to have an high priority on that issue as many shops are running in big troubles because of it. Many thanks.

    ps: no other changes has been made and the installation is all updated.

    Cheers Alex

    • This reply was modified 8 months ago by alexqbox.
    • This reply was modified 8 months ago by alexqbox.
    • This reply was modified 8 months ago by alexqbox.
    Thread Starter alexqbox

    (@alexqbox)

    @rossviviano any news on that? The Problem still exists.

    Plugin Support Ross V. a11n

    (@rossviviano)

    Automattic Happiness Engineer

    Hi again,

    Following along with the GitHub issue, it appears that there’s a PR for it, and the fix is awaiting verification. You can track the progress here:

    https://github.com/woocommerce/woocommerce/pull/28103

    Ross

    The problem still exists as of 10/27/20

    I have a hotfix, if anyone wants to use this, before the official bug release.
    This is the code from the pull request on github, which I’ve adapted, so you can add it to your theme’s functions.php:

    /**
     * Hotfix for Version 4.6.1 to prevent variation id of zero passing validation, allowing incorrect proces in some cases.
     * @return Boolean
     */
    function inmedia_hotfix( $passed, $product_id, $quantity, $variation_id, $variations ) {
    
    	$product = wc_get_product( $product_id );
    
    	// Prevent parent variable product from being added to cart.
    	if ( empty( $variation_id ) && $product->is_type( 'variable' ) ) {
    
    		$url          = get_permalink( $product_id );
    		$product_name = $product->get_name();
    
    		/* translators: %1$s: Product link, %2$s: Product title, %3$s: Product name. */
    		wc_add_notice( sprintf( __( 'Please choose product options by visiting <a href="%1$s" title="%2$s">%3$s</a>.', 'woocommerce' ), esc_url( $url ), esc_html( $product_name ), esc_html( $product_name ) ), 'error' );
    
    		$passed = false;
    	}
    
    	return $passed;
    }
    add_filter( 'woocommerce_add_to_cart_validation', 'inmedia_hotfix', 10, 5 );

    Tested and working fine for us.
    This is better than modifying the woocommerce source, but should be considered a temporary solution, until there is an official release.
    We simply can’t wait until then, as this is affection our clients business.

    • This reply was modified 7 months, 2 weeks ago by philinmedia.
    Thread Starter alexqbox

    (@alexqbox)

    Thanks a lot @philinmedia, but that Hotfix doesn’t work well with simple products. After adding the code simple products can’t be added to the cart anymore.

    • This reply was modified 7 months, 2 weeks ago by alexqbox.
    • This reply was modified 7 months, 2 weeks ago by alexqbox.

    I had the same problem and solved it adding the following code.
    Pretty much the same as the previos hotfix but changed the filter hook signature and used $POST[‘variation_id’] to capture the variation in case the product is variable.

    Hope it works for you guys!

    /**
     * Hotfix for Version 4.6.1 to prevent adding variable products with no variation to cart.
     * @return Boolean
     *
     *
     * https://wordpress.org/support/topic/order-placed-without-variations/
     *
     */
    function woo_hotfix_4_6_1( $passed, $product_id, $quantity ) {
    
    	$product = wc_get_product( $product_id );
    	
    	// Prevent product from being added to cart if no variation_id found in $POST.
    	if ( empty( $_POST['variation_id']) && $product->is_type( 'variable' ) ) {
    
    		$url          = get_permalink( $product_id );
    		$product_name = $product->get_name();
    
    		/* translators: %1$s: Product link, %2$s: Product title, %3$s: Product name. */
    		wc_add_notice( sprintf( __( 'Por favor seleccione un opcion del producto visitando: <a href="%1$s" title="%2$s">%3$s</a>.', 'woocommerce' ), esc_url( $url ), esc_html( $product_name ), esc_html( $product_name ) ), 'error' );
    
    		$passed = false;
    	}
    
    	return $passed;
    }
    add_filter( 'woocommerce_add_to_cart_validation', 'woo_hotfix_4_6_1', 10, 5 );
    • This reply was modified 7 months, 1 week ago by lucasnatoli.
    Thread Starter alexqbox

    (@alexqbox)

    Thanks for sharing @lucasnatoli i will test it.

    I also experienced this issue today as well. It looks like this will be fixed in 4.7.1.

    https://github.com/woocommerce/woocommerce/pull/28103

    https://github.com/woocommerce/woocommerce/milestone/174

    Plugin Support Ena P (a11n)

    (@drwpcom)

    Yes, this issues should have been resolved by updating WooCommerce to version 4.7.1. I’ll keep this thread open a few more days for any comments before I resolve it.

    Thread Starter alexqbox

    (@alexqbox)

    Hello @drwpcom yes after updating to the latest version it seems to be fine now. No errors so far. Thx

Viewing 14 replies - 1 through 14 (of 14 total)
  • The topic ‘Order placed without Variations’ is closed to new replies.