WooCommerce 2.1 was released on Monday, and makes several changes to the core plugin. As a result, you may experience issues when upgrading if you don’t pay attention to a few of the changes. The guide that follows is a general overview of some things to look out for when upgrading to WooCommerce 2.1 to make the transition from WooCommerce 2.0 as smooth as possible.

There are a couple of known issues that are being updated already, so keep an eye out for Version 2.1.1 in the next couple of days if this guide doesn’t address an issue you’re experiencing. (Update: This has now been released.)

Preparing to Upgrade

First, you should always back up your site before upgrading major plugins such as WooCommerce. A plugin like BackupBuddy can be useful, or if you use a managed hosting service like WP Engine (affiliate link), then you probably have nightly backups that you could restore already.

Another habit that we recommend forming is using a staging site to upgrade all plugins before deploying those updates to your live site. This is another reason we love WP Engine. You can use their staging site capabilities to clone your site to a staging environment, make any changes needed, then copy those changes back to your live site. BackupBuddy can do this as well by copying your domain to a sub-domain, such as staging.mysite.com. You could also achieve this with a plugin like WP Stagecoach.

Performing Upgrades

Once you have a backup and testing site ready, you should make sure you’re running WordPress 3.8, then you can upgrade WooCommerce and any extensions with updates (though most have already been made 2.1-compatible).

One of the first things you’ll notice is that settings have changed. For example, all Payment Gateway information and settings is now under “Checkout”. Under “General”, we recommend that you leave the REST API enabled. You may also want to set a number of decimal places (recommended: 2) for your pricing under General settings. Some of the other general settings have been moved to more appropriate menus. For example, the coupon and SSL settings have been moved to “Checkout”.

Tax handling has also been improved (still under the “Tax” menu), and taxes can be total or itemized in the checkout. Price display in the catalog can also be inclusive or exclusive of tax.

The pages installed by default have also changed, which greatly simplifies plugin setup. The only pages now installed are the “Shop”, “Cart”, “Checkout”, and “My Account” pages. You may want to double-check that you have these four pages with the appropriate shortcodes on them (remember, you won’t need all of the shortcodes from that link – the docs are not updated yet).

Sub-pages, such as “Lost Password” are now endpoints generated by the plugin, so pages with shortcodes for these items will no longer work the way that they have previously and you can delete them. Instead, these pages will always have the same URL. For example, the “Lost Password” page will now always be located at www.mystore.com/my-account/lost-password/ unless you change the endpoint under the “Accounts” menu (other endpoints are under “Checkout”) or the name / URL of the “My Account” page. This improves stability and prevents the accidental deletion of important pages.

You can also allow customers to register without a password under the new “Accounts” menu to facilitate registration and improve conversions. Passwords will be automatically generated and sent to customers.

As far as other settings are concerned, we’d recommend checking out your shipping and tax settings since there are a few new options, but not much else should be affected.

Note: If you were using the ShareThis, Google Analytics, ShareDaddy, Piwik, or ShareYourCart integrations, you’ll notice that these have been removed from the core plugin and the “Integrations” menu may be gone. These are now separate companion plugins that you can download for free (the WooCommerce announcement has links to all of the new integration plugins).

Known Issues

Here’s a list of known issues, but we’ll give you a recap of some here.

First, changes to the way the frontend of your store may be related to your theme (i.e., the way product pages display), as some third-party themes have not been updated to be compatible. See this debugging guide to determine if a theme issue exists, and if so, contact your theme provider to ask them to update for WooCommerce 2.1.

If this doesn’t help, creating a support ticket with both your theme developer and WooCommerce would probably be the best course of action to target the problem. However, taking a couple simple debugging steps on your part will greatly reduce the time needed to solve the issue, and may be something you can do on your own.

Known frontend changes include variations and product reviews. Product variations will now display “Low Price – High Price” rather than “From {Low Price}” in order to prevent misleading customers, as some variations can change price drastically. If you want to revert to the old format, follow this guide. Also, the box to write product reviews will no longer open in a lightbox.

Here are some specific issues and fixes:

  1. If variable products cannot be added to the cart, delete /woocommerce/single-product/add-to-cart/variable.php from your theme’s directory and ask your theme provider to update their WooCommerce templates.
  2. If language codes are being ignored, wait for the WooCommerce 2.1.1 release, as this is a bug. Update: You can now upgrade to WooCommerce 2.1.1 to fix this.
  3. You want to disable the WooCommerce stylesheet, but can’t find the setting. That’s because it’s not there. Use this documentation instead.
  4. If you have 404 errors all over the place, this can be fixed, and will be in WooCommerce 2.1.1. In the meantime, you can manually flush permalinks by re-saving the Settings > Permalinks page in your WordPress admin.
  5. You see an error like this:
    Fatal error: Call to undefined method
    WC_Shipping::get_available_shipping_methods() in .../wp-content/themes/THEME-NAME/woocommerce/checkout/review-order.php on line 14

    This is a theme issue and will need to contact the theme developer to have the deprecated template files updated.

  6. If your widgets are not displayed, it’s because some have been renamed to avoid conflicts. You may need to go to Appearance > Widgets to re-add these widgets to your footer and sidebars. Many widgets were also compressed into a new “Products” widget, which has all of the same capabilities.

In Summary

As we’ve had a large hand in this development cycle, we’re confident that the new changes make WooCommerce, faster, more stable, and more secure than ever before. If you’re lost, please post questions in the comments and we’ll do our best to help you out. Once you’ve upgraded, we hope that you’ll enjoy the improvements as much as we do!

Published by Beka Rice

Beka leads product direction for SkyVerge and technical documentation. She spends a lot of time on research and interviews, but likes to write so she has an excuse to spend more time jamming out to anything from The Clash to Lady Gaga.

42 Comments

  1. Great write up. I will link to your page. I have one question, the change password in the my account section is now incorrect and I don’t see an endpoint for change password. How is this corrected? Thanks

    • Hi Angela! Glad you found it useful. I’m assuming you’re talking about the “My Account” page for customers? If so, I’m not able to recreate this issue in my own environment, as logging into a customer account provides the option to edit password and account details correctly. This may be that you don’t have the correct “My Accounts” page selected under “Accounts”. If this isn’t the case, can you provide some more info?

      If needed, the endpoint to change passwords is “edit-account”, so it would at www.mystore.com/my-account/edit-account/ unless you edit this under the “Accounts” menu.

      • Beka: it clarifies very much your intervention. Only I still have a doubt: how do I create the end-points? For example, of the page My Account how and where do I create http://www.mystore.com/my-account/lost-password?

        Thank you in advance.

        Beka: me aclara mucho tu intervención. Sólo me queda una duda: ¿cómo creo yo los end-points? Por ejemplo, de la página Mi Cuenta ¿cómo y dónde creo http://www.mystore.com/my-account/lost-password?

        Gracias de antemano.

        • Hi Ros, You don’t really have to anything to create this endpoint; it’s already created when you update to WooCommerce 2.1. Under “Pages”, the “My Account” page should have this shortcode: [woocommerce_my_account]. If it does, it will automatically display the link to edit the account for logged-in users. If you didn’t have a “My Account” page before, then that could cause an issue. You’ll want to re-create that page, then set the “My Account Page” to the page you’ve just created under Settings > Accounts.

          If you want to change the URL of the link, you can go to Settings > Accounts and go down to “My Account Endpoints” to change them if needed. However, remember that you don’t actually have to create or change any endpoints, as these are automatically created when updating to WooCommerce 2.1. So long as you have the correct “My Account” page set up, these should work without anything further done on your part.

  2. Hi Beka,

    Thanks for the nice article.

    What is miss in woocommerce after updating is the Catalog tab. Where can i change those settings?

    Best regards,

    Richard

    • Hi there! Most of these options are now under the “Products” menu under WooCommerce > Settings. The Pricing Options are under the “General” settings menu. Hope that helps!

  3. Hi
    Very helpful article and tutorial.

    One question I have, for which I was not able to find an answer anywhere, what does this mean:
    “Connect your Canada Post Account – Before you can start using Canada Post you need to register for an account, or connect an existing one.
    ” REGISTER/CONNECT ”
    What needs to be done with this notification?

    Thanks
    Lyse

    • Hi Lyse, were you using Canada Post previous to the upgrade? It sounds like your account information may need to be re-entered under WooCommerce > Settings > Shipping, as it may have been deleted some how. If you don’t want to use it, you can deactivate that plugin.

      • Hi Beka,

        Yes I was using the CP plugin and I do still need it. When I look at the WooCommerce Shipping settings, there is no Canada Post account information any longer. I do see all of my other information, ie. boxes, etc.

        Lyse

        • Hey Lyse, is the plugin activated? Sometimes I have issues with plugins not reactivating when updating and I don’t notice, so I’d double check this. (Happened to me with Gravity Forms the other day 🙂 .) If it is active, then this sounds like a potential error. I’d submit a support ticket so that the WooCommerce team can debug this for you – support.woocommerce.com

  4. Hello, with the new update I have worked out how to correctly add the end points. I am noticing that pages such as lost password will show up for members and edit my account for non members. How do I configure it so that depending on whether you’re logged in or not, certain pages will show up?

    • Hi there! Core pages, such as the “My Accounts” page, will always be displayed to users, but will automatically change based on whether the user is logged in or not. For example, the “My Account” page will display account information and the option to edit it to logged-in users, but will only display a log in screen to non-logged in users. Sub-pages, such as mystore.com/my-account/edit-account/ also recognize whether a user is already logged in. For example, a logged-in user will be able to see the edit account options on that page, but a non-logged in user will see the log in window and cannot access any account details before signing in.

      Does that help, or are you looking for something different?

  5. Weird to see an update contain so much core differences that break a lot of stuff implemented on a fairly common way.

    • Hi Tom, I don’t think it’s necessarily breaking things, I think the issues is that many theme developers either override all WooCommerce templates (which is a bad idea) or didn’t update to be WC 2.1 compatible despite a three-month lead time (for example, a couple super-popular themes on ThemeForest didn’t update at all before release). Overriding all templates is “implementing in a common way” as we see tons of themes that do this, but it’s still poor practice and has caused several issues as a result since templates weren’t updated.

      For example, we were able to update over 50 extensions to be compatible over the past month and a half, and have had relatively few issues as a result (when I say we, I mean Max and Justin mostly 🙂 ).

      I agree that this update could have been broken into a few pieces to minimize the issues, which I think is why WooCommerce has committed to smaller, more frequent releases, but most of the “breaks” we’ve seen have actually been theme issues or customizations. I don’t need to defend WooCommerce, but I’m in favor of most of the changes because they support long-term growth of the platform and I think they were communicated well before the update.

  6. I’ve upgraded all my plugins, and woocommerce to 2.1, and the only issue I’m having is with the result after placing an order. I get the following:
    The Address Bar Reads:

    https://shop.goodvapes.com/wp-admin/admin-ajax.php?action=woocommerce_checkout&order=7227&key=wc_order_52fc3b4fd9cae

    And the blank page reads this:

    {“result”:”failure”,”messages”:”
    \n\t\t\t
    Sorry, your session has expired. Return to homepage\n\t\t\t
    Country is a required field.\n\t\t\t
    First Name is a required field.\n\t\t\t
    Last Name is a required field.\n\t\t\t
    Address is a required field.\n\t\t\t
    Town \/ City is a required field.\n\t\t\t
    State is a required field.\n\t\t\t
    Zip is a required field.\n\t\t\t
    Email Address is a required field.\n\t\t\t
    Phone is a required field.\n\t”,”refresh”:”false”,”reload”:”false”}

    The order goes through, all relevant emails are sent, with no problems.. I have flushed permalinks, deactivated plugins, etc.. to no avail. I assume it’s endpoint related or something? Any ideas or thoughts are appreciated!

    • Hi there, this definitely sounds like an issue, but it’s not something I could pinpoint based on that information. I’d switch to a default theme (i.e., TwentyTwelve) with all plugins deactivated (not sure if you changed themes), then reactivate the plugins one-by-one to ensure that it’s not a theme issue. I know you said you’d done that with plugins, but the theme could be having an impact and I’d try again with a default theme if you haven’t. If that doesn’t help, I’d advise submitting a support ticket to have someone debug further.

  7. Hi,

    I m confused as I don t see where people are sent after checking out with paypal and getting back to the site.

    I was trying to track sales conversion with piwik, but where is the thank you page now?

    Thanks

    • Hi there, the “Thank You” / Order received page is now an endpoint (URL will always be the same), and should be at this URL: www.mystore.com/checkout/order-received/. If you’ve changed the title of the Checkout Page or the Order Received endpoint under Settings > Checkout, then this URL may be different for your store.

  8. Hello – I googled an issue I’ve been having and came across this article. I can’t seem to find the specific issue in your article or any of the comments. Since updating whenever I go to my checkout page I get the following error: Sorry, your session has expired. Return to homepage

    Is this a woocommerce issue? Any ideas?

    Thanks.

    Andy

    • Hi there, have you tried deactivating all plugins, then reactivating WooCommerce? If so, do you still see the error? You can press Control + F5 to clear the cache when viewing the checkout page as well.

      If none of these work, Check WooCommerce > System Status for session errors, as this may be a problem for your host to resolve.

      • I’m still having this same error – {“result”:”failure”,”messages”:”
        \n\t\t\t
        Sorry, your session has expired. Return to homepage\n\t\t\t
        Country is a required field.\n\t\t\t
        First Name is a required field.\n\t\t\t
        Last Name is a required field.\n\t\t\t
        Address is a required field.\n\t\t\t
        Town \/ City is a required field.\n\t\t\t
        State is a required field.\n\t\t\t
        Zip is a required field.\n\t\t\t
        Email Address is a required field.\n\t\t\t
        Phone is a required field.\n\t”,”refresh”:”false”,”reload”:”false”}

        All plugins were deactivated and checkout tested again. Still same issue. Using latest Woocommerce version as well as latest table rate shipping and authorize.net extensions.

        Only red line in my status report is memory limit is set to 40mb, and it says it should be at least 64mb. Could this cause the problem? I tried upping this in both the php.ini file and using the wp-config file and neither are changing the memory limit. Guess I’ll have to contact Media Temple

        Tearing my hair out trying to figure this problem out.

  9. For anyone finding this post and seeing the session time out error on checkout, and using the Authorize.net plugin from codecanyon,
    you need to change Line 169 of class.authorizenetextension.php from

    get_permalink(get_option(‘woocommerce_thanks_page_id’))
    to
    $this->get_return_url($this->order)

  10. I think I’m getting this, but since upgrading my site no longer works. I’m using Sagepay Form Gateway plug-in but it no longer makes the transfer to the payment gateway when I click “Place order”

    Is this the “order-pay” endpoint or “add-payment-method” one that are pointing in the wrong place somehow?

    Thanks
    Richard

  11. The same problem also happened on paypalpro plugin, with woocommerce 2.1 installed.
    WC 2.1 now using endpoint, so we need to change thank you page redirect url on successful payment.
    previous: add_query_arg(‘key’, $order->order_key, add_query_arg(‘order’, $order->id, get_permalink(get_option(‘woocommerce_thanks_page_id’))))
    get_option(‘woocommerce_thanks_page_id’) -> this will return false, that’s why WP will return admin-ajax.php as the redirect url.
    we need to change the value of redirection to : $order->get_checkout_order_received_url()
    no need to set additional query, this function will return complete redirect to thank you page.
    hope this help 🙂

  12. After updating to 2.1 all of my individual product pages have disappeared – the categories and sub cats are all still fine and the core product image etc is still there but any click to an individual product throws up an error 404 page not found message.

    I tried flushing permalinks but this didn’t help. Sounds like a simple navigation issue but I can’t work out what I need to do!

    • Fixed it!

      It was a permalink issue. there was a custom setting buried away & using a standard one sorted everything.

  13. I upgraded to 2.12 and my customizations no longer seem to take place, i.e. the changes I made to “wrapper-start.php” in my child theme are suddenly not taking effect. Has the protocol for overriding templates changed?

    • Hey Chris, nothing specific changed in terms of the mechanism for overriding templates, but this is probably something you’d want to have the theme dev look into. They could be including an outdated template, as some of the templates themselves did change in WC2.1.

  14. Can you please suggest me more help me for :

    undefined method WC_Shipping::get_available_shipping_methods() Error.

    Hope you will help me.

    Thanks in advance.

Hmm, looks like this article is quite old! Its content may be outdated, so comments are now closed.