WooCommerce is a free eCommerce plugin that allows you to sell anything, beautifully. Built to integrate seamlessly with WordPress, WooCommerce is the world’s favorite eCommerce solution that gives both store owners and developers complete control.

With endless flexibility and access to hundreds of free and premium WordPress extensions, WooCommerce now powers 30% of all online stores — more than any other platform.

Sell anything, anywhere

With WooCommerce, you can sell both physical and digital goods in all shapes and sizes, offer product variations, multiple configurations, and instant downloads to shoppers, and even sell affiliate goods from online marketplaces.

With premium extensions, you can offer bookings, memberships, and recurring subscriptions. Perhaps you’d like to sell monthly subscriptions for physical goods, or offer your members a discount on digital downloads? It’s all possible.

Ship wherever you like

Offer free shipping, flat rate shipping, or make real-time calculations. Limit your shipments to specific countries, or open your store up to the world. Shipping is highly configurable, and WooCommerce even supports drop shipping.

Extensive payment options

WooCommerce comes bundled with the ability to accept major credit cards, PayPal, BACS (bank transfers), and cash on delivery. Need additional options? More than 140 region-specific gateways integrate with WooCommerce, including popular choices like Stripe, Authorize.Net, and Amazon Payments.

You control it all — forever

WooCommerce gives you complete control of your store, from taxes to stock levels to customer accounts. Add and remove extensions, change your design, and switch settings as you please. It’s all under your control.

One of the biggest risks of using a hosted eCommerce platform is what happens to your store if the provider closes up shop. With WooCommerce, you have complete control, so there’s never any reason to worry. Your data belongs to you — and it’s kept secure, thanks to regular audits by industry leaders.

Define your style with Storefront

Storefront is a free WordPress theme available to any WooCommerce store. Along with deep WooCommerce integration, Storefront prioritizes speed and uptime while eliminating theme and plugin conflicts during major updates.

Define your style even further by customizing Storefront to your liking or choosing from one of our several Storefront child themes. It’s all up to you, and all open source.

Built with developers in mind

Extendable, adaptable, and open source — WooCommerce was created with developers in mind. With its strong, robust framework, you can scale your client’s store all the way from basic to high-end (infinity and beyond).

Built with a REST API, WooCommerce can integrate with virtually any service. Your store’s data can be accessed anywhere, anytime, 100% securely. WooCommerce allows developers to easily create, modify, and grow a store that meets their specifications.

No matter the size of the store you want to build, WooCommerce will scale to meet your requirements. With a growing collection of more than 300 extensions, you can enhance each store’s features to meet your client’s unique needs — or even create your own solution.

If security is a concern, rest easy. WooCommerce is audited by a dedicated team of developers working around the clock to identify and patch any and all discovered bugs.

We also support WooCommerce and all its extensions with comprehensive, easily-accessible documentation. With our docs, you’ll learn how to create the exact site your client needs.

Extensions galore

WordPress.org is home to some amazing extensions for WooCommerce, including:

Keen to see them all? Search WordPress.org for ‘WooCommerce’ to dive in.

If you’re looking for something endorsed and maintained by the developers who built WooCommerce, there are a plethora of premium eCommerce extensions, the most popular of which include:

And there’s plenty more where they came from. Visit our extensions page to find out everything you’re capable of and all that’s possible with premium WooCommerce extensions.

Join our growing community

When you download WooCommerce, you join a community of more than a million store owners, developers, and WordPress enthusiasts. We’re one of the fastest-growing open source communities online, and no matter your skill level we’d love to have you!

If you’re interested in contributing to WooCommerce we’ve got more than 350 contributors, and there’s always room for more. Head over to the WooCommerce GitHub Repository to find out how you can pitch in.

Want to add a new language to WooCommerce? Swell! You can contribute via translate.wordpress.org.

And, finally, consider joining or spearheading a WooCommerce Meetup locally, more about those here.


  • The WooCommerce settings panel.
  • WooCommerce products admin.
  • Product data panel.
  • WooCommerce sales reports.
  • A single product page.
  • A product archive (grid).


Minimum Requirements

  • PHP version 5.2.4 or greater (PHP 7.2 or greater is recommended)
  • MySQL version 5.0 or greater (MySQL 5.6 or greater is recommended)

Visit the WooCommerce server requirements documentation for a detailed list of server requirements.

Automatic installation

Automatic installation is the easiest option as WordPress handles the file transfers itself and you don’t need to leave your web browser. To do an automatic install of WooCommerce, log in to your WordPress dashboard, navigate to the Plugins menu and click Add New.

In the search field type “WooCommerce” and click Search Plugins. Once you’ve found our eCommerce plugin you can view details about it such as the point release, rating and description. Most importantly of course, you can install it by simply clicking “Install Now”.

Manual installation

The manual installation method involves downloading our eCommerce plugin and uploading it to your webserver via your favourite FTP application. The WordPress codex contains instructions on how to do this here.


Automatic updates should work like a charm; as always though, ensure you backup your site just in case.

If on the off-chance you do encounter issues with the shop/category pages after an update you simply need to flush the permalinks by going to WordPress > Settings > Permalinks and hitting ‘save’. That should return things to normal.

Sample data

WooCommerce comes with some sample data you can use to see how products look; import sample_products.xml via the WordPress importer. You can also use the core CSV importer or our CSV Import Suite plugin to import sample_products.csv.


Where can I find WooCommerce documentation and user guides?

For help setting up and configuring WooCommerce please refer to our user guide

For extending or theming WooCommerce, see our codex.

Where can I get support or talk to other users?

If you get stuck, you can ask for help in the WooCommerce Plugin Forum.

For help with premium extensions from WooCommerce.com, use our helpdesk.

Will WooCommerce work with my theme?

Yes; WooCommerce will work with any theme, but may require some styling to make it match nicely. Please see our codex for help. If you’re looking for a theme with built in WooCommerce integration we recommend Storefront.

Where can I request new features, eCommerce themes and extensions?

You can vote on and request new features and extensions in our WooIdeas board

Where can I report bugs or contribute to the project?

Bugs can be reported either in our support forum or preferably on the WooCommerce GitHub repository.

Where can I find the REST API documentation?

You can find the documentation of our REST API on the WooCommerce REST API Docs.

WooCommerce is awesome! Can I contribute?

Yes you can! Join in on our GitHub repository 🙂


Read all 3,233 reviews

Contributors & Developers

“WooCommerce” is open source software. The following people have contributed to this plugin.


“WooCommerce” has been translated into 55 locales. Thank you to the translators for their contributions.

Translate “WooCommerce” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.


3.5.7 – 2019-03-19

  • Security – Improved the way in which state fields are regenerated by JavaScript to ensure values are properly escaped.

3.5.6 – 2019-03-07

  • Fix – Removes invalid product structured data from archives, and include more data on single product pages. #22925
    Product structured data should only be generated for visible data, and not on archives when there are single
    product pages available, as per the documentation.
    Since this change removes structured data from archives, the filters woocommerce_structured_data_product_limit
    and woocommerce_structured_data_product_limited have also been removed.
    To customize product structured data, for example adding custom fields or include on archives, see this article:
  • Fix – Fix last item in breadcrumb structured data, and include on shop page. #22925
  • Fix – Get insert ID before running actions in _insert_tax_rate. #22868
  • Fix – Add precision to tax in the discount class so min spend checks work correctly. #22888
  • Fix – Update troubleshooting link in failed order email. #22943
  • Fix – Update Flexslider to 2.7.2.
  • Fix – Fill user’s account first name and last name only when those fields are empty. #22783

3.5.5 – 2019-02-20

  • Fix – Fix allow product low stock threshold be the WC settings default. #22777
  • Fix – Fix error on product category when sorting by multiple fields. #22066
  • Fix – Recalculate coupon totals after adding a coupon to an order. #22580
  • Fix – Include refunded orders in top sellers, earners sales by product. #22581
  • Fix – Fix issue where “Any” attributes on variable products not always selectable on front end. #22067
  • Fix – Ensure partial refunds fire order.updated webhooks. #22072
  • Fix – Reload the cart page when the cart is empty. #22114
  • Fix – Always show the price filter widget when filtering products by price. #22303
  • Fix – Added body {padding: 0;} CSS rule to the email-styles.php to fix the iOS emails layout issue. #22309
  • Fix – Update variable product default attributes to reflect attribute terms slug edit. #22398
  • Fix – Adds all 3 callback arguments to the woocommerce_order_item_display_meta_value filter called from the get_formatted_legacy method of the WC_Order_Item_Meta class. #22411
  • Fix – Remove html from add coupon error alert during manual order entry. #22424
  • Fix – Include tax in subtotals when validating coupon minimum and maximum in manual order entry. #22464
  • Fix – Fix ssl check in case shop page no longer exists. #22531
  • Fix – Exclude paged from price slider and rating filter. #22533
  • Fix – Limit bulk variation percentage price adjustment to decimal places in pricing settings. #22537
  • Fix – Fix category image name field to be used for API POST/PUT. #22553
  • Fix – Fix remote request test in get_environment_info(). #22551
  • Fix – Fix notices when images have no metadata or their metadata is removed. #22562
  • Fix – Check for presence of ‘save’ entry in post data when determining whether to save settings. #22572
  • Fix – Additional CSS support for more input types on variations panel in admin. #22590
  • Fix – Over escaping rating widget html. #22593
  • Fix – Update cron sale price removal to remove the price at midnight after the sale ends. #22609
  • Fix – WC_Log_Handler_File::remove – fix for MS Windows #22624
  • Fix – Only require flat shipping rate when shipping method is enabled in the On-Boarding Wizard. #22599
  • Fix – Fix wrong variable check in add_uncropped_metadata. #22638
  • Fix – No alert for mis-matched password reset. #22642
  • Fix – Hold-stock behavior between simple products and variable products was different. #22646
  • Fix – OBW: Offer Storefront when WP 5.0 default theme is active #22649
  • Fix – Add novalidate attribute to payment form to prevent hidden fields preventing submission. #22662
  • Fix – Switch span to paragraph for descriptions in admin user profile view to correct spacing. #22663
  • Fix – Added POST variable check in product data meta box. #22681
  • Fix – PayPal item name encoding. #22684
  • Fix – Move PayPal BN partner ID. #22763
  • Fix – The “for” attribute of a label for a radio input is invalid in woocommerce_form_field. #22690
  • Fix – Custom payment options sections was not loading settings. #22704
  • Fix – Breadcrumbs on custom post types was using the singular name instead of plural. #22705
  • Fix – Fixed generate webhook signature when secret contains special chars. #22722
  • Fix – Set correct item meta after restocking items with refunds. #22729
  • Fix – Sales by Product to consistently calculate net sales counts and amounts. #22711
  • Fix – Importer – Variations cannot be drafts so set to private. #22736
  • Fix – Next/previous links for orders REST endpoint when status query parameter is present. #22741
  • Fix – Default value passed to sorting dropdown #22677
  • Tweak – Updates Mailchimp branding in setup wizard. #22514
  • Tweak – Refactor @id generation for product structured data to prevent plugin conflicts. #22554
  • Tweak – Keep count of the number of times custom coupons apply. #22529
  • Tweak – Change WooCommerce emails footer from Powered by WooCommerce to Built with WooCommerce. #22530
  • Security – Improved escaping for Photoswipe captions.
  • Security – Improved escaping for JSON attributes and structured data.

3.5.4 – 2019-01-21

  • Tweak – Allow limited html in woocommerce_rating_filter_count filter. #21904
  • Tweak – Remove ‘on-hold’ orders from admin tax reports for more logical reporting. #22419
  • Tweak – Remove payment phrases from processing emails. #22418
  • Tweak – Removed display of cost for local pickup when free. #22446
  • Fix – Unescape CSV formulas in product attributes in CSV importer/exporter. #21938
  • Fix – Remove use of non-existing WC_REST_Dev_Setting_Options_Controller class. #22121
  • Fix – Fix edge case where get_plugins would not have the custom WooCommerce plugin headers if get_plugins was called early. #21669
  • Fix – Prevent PHP warning when deprecated user meta starts with uppercase. #21943
  • Fix – Fixed support for multiple query parameters translated to meta queries via REST API requests. #22108
  • Fix – Prevent PHP errors when trying to access non-existant report tabs. #22183
  • Fix – Filter by attributes dropdown placeholder text should not be wrapped in quotes. #22185
  • Fix – Apply sale price until end of closing sale date. #22189
  • Fix – Allow empty schema again when registering a custom field for the API. #22204
  • Fix – Don’t display escaped html on checkout when javascript is disabled. #22214
  • Fix – Fixed formatted address in uppercase for languages that use accents. #22096
  • Fix – Reload the cart page when the cart is empty when there is a hash in the URL. #22114
  • Fix – Do not schedule duplicate webhooks within 10 minutes of each other to maintain previous behavior. #22088
  • Fix – Return correct next scheduled date for items in queue by fixing date instantiation in WC_Action_Queue::get_next(). #22104
  • Fix – Allow products to use default low stock threshold. #22084
  • Fix – Fix 0 value attribute permalink calculation, property population in REST api. #22026
  • Fix – Ensure cache delete on coupon trash or delete. #22053
  • Fix – Ensure product parent exists before getting its image. #22074
  • Fix – Correctly use wildcard character on email restrictions on coupons. #22167
  • Fix – Avoids Warnings in Action Scheduler Library for PHP 5.2. #22160
  • Fix – Don’t include product in BreadcrumbList structured data so Google will recognize stand-alone Product structured data. #22344
  • Fix – Fix Product widget showing hidden products when hide out of stock was enabled. #22230
  • Fix – Run webhook status updates through new wc_is_webhook_valid_status functions when doing API requests. #22205
  • Fix – Correct quote handling in tax class names. #22270
  • Fix – Prevent style side-effects on notices on the Extensions pages. #22330
  • Fix – Check stock status of items when ‘ordering again’ from the account page. #22331
  • Fix – Improve rounding when rounding at subtotal level in cart. #21217
  • Fix – Restores an opportunity to print non-cart related notices that a few extensions are relying on. #22337
  • Fix – Correct order item meta alignment in order emails when using an RTL language. #22376
  • Fix – Fix bug where product status was erroneously going to draft status in some circumstances on new published variable products. #20667
  • Fix – Load customer data for logged in users regardless of being member of sub-site to avoid errors. #22448
  • Fix – Use slug sanitization on product export category slugs for better foreign character support. #22320
  • Fix – Correct item subtotal rounding when multiple taxes are applied so it matches the cart. #22416
  • Fix – Prevent fatal errors when retrieving network orders for sites that do not have WooCommerce activated. #22439
  • Fix – Numerous bug fixes around checkout field locales on first load. #22444
  • Fix – Correct position of admin notices on my-account pages. #22445
  • Fix – Fixed padding of addresses in email template. #22466
  • Fix – Prevent payment method descriptions sliding up/down if selected after ajax updates. #22459
  • Fix – Fixed formatted address in uppercase for languages that use accents. #22096
  • Fix – Fix product updating on import for SKUs with special characters. #22071
  • Fix – Ensure cache_delete on coupon deletion. #22053
  • Fix – Make product edit form aware publish was pressed. #20667
  • Fix – Unescape imported CSV formulas in product attributes. #21938
  • Fix – Warning when deprecated user meta starts with uppercase. #21943
  • Fix – Filter out buttons from the onRowClick event on the Orders list view page. #21966
  • Fix – Update “Filter Products by Attribute” widget when product stock quantity changes via “Quick Edit” or WC API. #22029
  • Fix – Ensure product parent exists before getting its image. #22074
  • Fix – Fixed support for multiple query parameters translated to meta queries via REST API requests. #22108
  • Fix – Strip hash from URL when reload refunds in the dashboard. #22116
  • Fix – Prevent notice when using non existing value for tabs in WooCommerce > Reports > Stock. #22183
  • Fix – Filter by attributes dropdown placeholder text wrapped in quotes. #22185
  • Fix – Fix escaped html on checkout when javascript is disabled. #22214
  • Fix – Allow empty schema again when registering a custom field for the API. #22204
  • Fix – Fix import & export of newline characters in product description fields. #22298
  • Fix – Allow quotes in tax class names. #22270
  • Fix – Sale price applies to end of closing sale date. #22189
  • Fix – Product export by unicode product categories. #22320
  • Fix – Check stock status of items when ‘ordering again’ from the account page. #22331
  • Fix – Issue where images offloaded to external servers caused errors and broken images when changing aspect ratios. #22461
  • Fix – Remove block comments from shop page description. #22334
  • Dev – REST API – 0 value attribute permalink calculation, property population in REST api. #22026
  • Dev – REST API – Fixed support to order results by slugs. #22168
  • Dev – REST API – Removed extra inherited filters from product endpoint in variations endpoint. #22452

3.5.3 – 2018-12-20

  • Fix – Fix orders list in the admin after a change introduced in WordPress 5.0.2. #22273

3.5.2 – 2018-11-29

  • Enhancement – Added compatibility for Twenty Nineteen theme. #21970
  • Update – Prepare WooCommerce for PHP 7.3. #22009
  • Tweak – Updates the signature field type to “password” in PayPal settings for increased security. #21715
  • Tweak – Change the filter name in the /myaccount/lost-password-confirmation.php template to differentiate between other filter with same name and different message. #21829
  • Tweak – Reintroduce Preview button by popular demand with the understanding that the Preview will only work on some product fields. It was removed from pubished products in 3.5.0 to prevent confusion. #21838
  • Tweak – Add tool to systems status tools for running the DB update routine. #21923
  • Tweak – Revert default behavior for woocommerce_formatted_address_force_country_display filter to maintain backwards compatibility. #21865
  • Tweak – Update products block notice for WP 5.0. #21930
  • Tweak – Use wp_kses_post instead of esc_html for sanitizing product titles to allow minimal HTML in product titles. #21936
  • Tweak – Use dedicated woocommerce_add_order_again_cart_item to filter cart item data when ordering again. Prevents issues with applying woocommerce_add_cart_item out of context. #21947
  • Tweak – Remove postal code for Angola, São Tomé and Príncipe since they don’t use postal codes and update locale info. #21984 #21985 #21987
  • Fix – Metadata with array key of 0 can save properly. #21641
  • Fix – Prevent deleting the default product category via REST API. #21696
  • Fix – Fix ‘Table does not exist’ messages on System Status Report in multisite. #21706
  • Fix – Add dynamic SSL check to dashboard SSL notice to prevent misdiagnosing that sites aren’t set up with SSL. #21738
  • Fix – Don’t show escaped HTML in admin order item details for fees. #21769
  • Fix – Don’t include draft variable products in on sale product results. #21778
  • Fix – Add woocommerce_hold_stock_minutes check back to stock check in cart/checkout. #21797 #22050
  • Fix – Fix potential undefined index notice on checkout fields when comparing the sort order. #21801
  • Fix – Throw an error when trying to set a variation as the parent of a variation in the CSV importer. #21810
  • Fix – Make “account erasure request” text translatable. #21812
  • Fix – Display notices on Order Pay page. #21821
  • Fix – Fix tax rate uploading by file path. #21831
  • Fix – Make wc_download_log_permission_id constraint creation work better on multisites and multiple sites using the same DB. #21836 #21940
  • Fix – Don’t render undecoded HTML entities in variations dimensions. #21844
  • Fix – Do not check for stock when not managing stock or have backorders enabled when paying through the order-pay page. #21849
  • Fix – Apply priority field sorting on additional filters to make it apply on the edit address pages as well. #21856
  • Fix – Fix export and edit of attribute labels with html encoded special characters in product CSV exporter. #21864
  • Fix – Prevent fatal error when rendering plaintext customer invoice email. #21879
  • Fix – Prevent fatal error when delivering webhooks using v3 API. #21921
  • Fix – Prevent undefined variable notice in wc_increase_stock_levels. #21928
  • Fix – Fix overescaping image output on product widget. #21929
  • Fix – Croatian Kuna symbol should be lowercase. #21934
  • Fix – Fixed an error when deleting logged entries when using the ‘WC_Log_Handler_DB’ handler. #21949
  • Fix – Update ShipStation plugin info so install works through setup wizard. #21953
  • Fix – Use dynamic DB table name in product list table shipping class query. #21954
  • Fix – Log file date/time should be in UTC and not site timezone as per the +00:00:00 string appended to it. #21981
  • Fix – Set customer’s country to selling country when only selling to one country and default customer location is ‘none’. #21995
  • Fix – Change new account email copy to be compatible with auto-generated accounts. #21999
  • Fix – Correct Aria-Labelledby attribute for quantity selectors. #22000
  • Fix – Show notices on lost password page. #22001
  • Fix – Fix authentication errors when using the REST API with 3rd-party authentication. #22013
  • Fix – Fix issues where potentially not all active plugins were included on the system status report. #22057
  • Fix – Make PDT validation use the same rounding as the IPN validation to prevent erroneous totals mismatch. #21729

3.5.1 – 2018-10-31

  • Fix – Use CRUD method to get product images to fix custom tables missing images. #21608
  • Fix – Use HTML entity for times sign when outputting dimensions to fix RTL support. #21633
  • Fix – Fix India address format to look nice in the shipping calculator. #21647
  • Fix – Don’t default gallery variation images to gallery thumbnail size if flexslider is disabled. #21655
  • Fix – Revert show shipping behavior change to prevent missing shipping line on Cart page. #21658
  • Fix – Removed non-existing WC_Product_Simple->set_date_created_gmt method. #21675
  • Fix – Use correct comment_type when fetching recent reviews for widget. #21689
  • Fix – Do not include strong tags as part of translation string on subscriptions disconnect message. #21690
  • Fix – Make it possible to send webhooks with the v3 API. #21745
  • Fix – Fix get_cart_from_session infinite loop when filters used. #21749
  • Fix – Use array instead of string to define class for address line 2 input on checkout. #21757
  • Fix – Make checkout fields priority work correctly again. #21763
  • Tweak – Remove mentions of deprecated live shipping rates from setup wizard. #21645
  • Tweak- Update product block editor hook for WP 5.0. #21703
  • Tweak – Merged similar strings to reduce number of translateable strings. #21704
  • Tweak – Remove hated “Over to you” text from emails. #21709
  • Tweak – Revert problematiic customer as post author change. #21740

3.5.0 – 2018-10-17

  • Feature – REST API v3. #20111
  • Feature – Option has been added on the inventory tab of the edit product page to set a low stock threshold for individual products. #20260
  • Feature – Add ability to export products by category to the CSV exporter. #20870
  • Feature – Ability to define custom product placeholder images that will resize to correct store aspect ratio. #20644
  • Enhancement – Excluded children categories from WP_Query in product shortcode if cat_operator=AND. #20207
  • Enhancement – Add anchor tag example to email template preview. #20246
  • Enhancement – Introduce is_paypal_supported_currency check in setup wizard. #20244
  • Enhancement – Payment method table reordering accessibility. #19844
  • Enhancement – Log errors from transaction emails with logger. #20203
  • Enhancement – Improved shipping calculator experience. Shows destination country and added context to calculate shipping link. #20345
  • Enhancement – On the fly image generation for frontend, if image sizes are missing. #20011
  • Enhancement – SelectWoo enabled product categories dropdown widget. #20617
  • Enhancement – Make it easier to read and act upon the outdated template notice. #20732
  • Enhancement – Styled date, time, etc. inputs in admin to match styling of other inputs. #21013
  • Enhancement – Show update notices on the System Status page for WordPress.org hosted Official WooCommerce extensions. #21073
  • Enhancement – Better wording for transactional emails. #21288
  • Fix – Check billing email is posted before using in WC_Cart::check_customer_coupons. #20180
  • Fix – Shipping postcode formatting when only posting a billing address. #20330
  • Fix – Correctly show/hide save card checkbox on tokenization form. #20506
  • Fix – orderby and order parameters in WC_Customer_Download_Log_Data_Store::get_download_logs() were ignored. #20931
  • Fix – Unslash city name to prevent double escape in tax settings. #21205
  • Fix – Updated phone validation logic. #21188
  • Fix – Fix weight and dimensions cache of variable products if childs doesn’t have any of those params. #21244
  • Fix – Correctly replace images in the woocommerce_uploads folder with the placeholder image. #20848
  • Fix – Show parent variable product in shipping class admin screen when variation has shipping class. #21278
  • Fix – Correctly excluded administrators from “Customer list” report. #21304
  • Fix – Update quick edit logic to show/hide Stock qty and Backorders fields. #21301
  • Fix – Fix Layered Nav Widget where special HTML entities did not display correctly in the “Any %s” string. #21312
  • Fix – Set the is_checkout javascript parameter on any page that uses the checkout filter or shortcode. #21328
  • Fix – Fix cron_interval property support in WP_Background_Process. #21353
  • Fix – CSS Changes to make text fields line up on the shipping settings page. #21247
  • Fix – Add extra null check to fix an issue with select payment fields using disabed select as placeholders. #21391
  • Fix – Don’t modify attributes orderby when sorting by name. #21408
  • Fix – Allow saving a stock quantity of 0 using quick edit. #21447
  • Fix – Change the query used to save session data to the database to protect against deadlocks. #21455
  • Fix – Make sure default category tooltip is rendered when the image column is deactivated. #21410
  • Fix – Fix warning when using logger instance in woocommerce_logging_class filter. #21448
  • Fix – Use uppercase “ID” when sorting product queries by ID. #21461
  • Fix – Consistently escape the gateway ID in the checkout payment method template. #21439
  • Fix – Avoid treating HTTP 301 and 302 codes as failures for webhooks. #21491
  • Fix – Add address_1 to shipping packages info in WC_Cart:: get_shipping_packages to make it work correctly in address formatting functions. #21493
  • Fix – Don’t fire two of the same action when saving shipping settings. #21494
  • Fix – Remove double condition for address line 2 in WC_Countries::get_default_address_fields. #20629
  • Fix – Correctly handle shorthand values for memory_limit in php.ini. #21557
  • Fix – Product shortcode numeric term slug matching. #21560
  • Fix – Remove the erasure tools links from the descriptions of the erasure settings for users without the manage_privacy_options capability. #21565
  • Fix – Don’t double urldecode posted variation attributes. #21570
  • Fix – Don’t double-sanitize cart images. #21574
  • Fix – Check if ID exists and is not empty before set Product’s download ID in API. #21588
  • Fix – Ensure wp_list_pluck() gets a array and not possibly null in WC_Product_Data_Store_CPT::update_attributes. #21591
  • Fix – Trim CSV header rows to prevent leading/trailing whitespace issues. #21614
  • Fix – Show draft products in previews on unsupported themes. #21619
  • Fix/Tweak – Fire woocommerce_grant_product_download_access hook after the download has its ID set. #20905
  • Fix/Tweak/Performance – Change wp_woocommerce_sessions primary key to session_id. #21245
  • Tweak – Show empty terms in admin product category filter dropdown. #20324
  • Tweak – Don’t force default token gateway active by default. #20125
  • Tweak – Move notice output to hooked in functions. #19794
  • Tweak – Apply order bulk actions in chronological order. #20338
  • Tweak – Updated Emogrifier to 2.0. #20547
  • Tweak – Avoid using wp.template (eval) in add-to-cart-variation.js. #19496
  • Tweak – Hide Preview button when creating new products, as most fields aren’t set up for it. #20650
  • Tweak – For guests, store all address fields to the session whilst placing an order. #20665
  • Tweak – Removed ‘ajax_add_to_cart’ class from ‘Read more’ button. #20690
  • Tweak – Removed unnecessary checkout form change trigger on load of the checkout page. #20655
  • Tweak – Add image size filters to wc_get_product_attachment_props(). #20722
  • Tweak – Only display the current site’s tables for a multisite install when viewing the system status. #20731
  • Tweak – include the file path and line number where a fatal error occurred in the fatal errors log. #20787
  • Tweak – Cast tax rate to float so that it can be treated as number further on in the code. #20910
  • Tweak – Send webhooks using Action Scheduler. #20030
  • Tweak – Update customer’s ip address on successful payment. #21038
  • Tweak – Changed wc_clean to checking for valid utf8 for line items and password. #20993
  • Tweak – Add to cart notice actions (View cart/Continue shopping) now have tabindex 1 for improved accessibility. #21108
  • Tweak – Remove icanhazip from geolocation services. #21198
  • Tweak – Remove unnecessary aria-required attributes from product reviews template. #21211
  • Tweak – Added hidden label for screen readers on checkout address line 2 input. #21193
  • Tweak – Remove empty space in mini-cart template. #21261
  • Tweak – Tax display in cart now depends on whether customer is tax exempt. #21292
  • Tweak – Change sort dropdown option “Sort by newness” to “Sort by latest”. #21311
  • Tweak – Sanitize endpoint slugs upon saving. #21355
  • Tweak – Ignore converting float meta value for registered post meta. #21333
  • Tweak – Remove ‘order_again’ query string to avoid multiple re-orders. #21444
  • Tweak – Remove Netherlands Antilles from the North America continent definitions. #21449
  • Tweak – Display label and meta on the same line in order emails to match frontend Order Details styling. #21456
  • Tweak – Use wp_get_upload_dir for geolite DB path. #21550
  • Performance/Tweak – Use post_author for the order customer instead of ‘_customer_user’ meta data. #17895
  • Performance – Exclude frontend include from REST API calls. #20000
  • Performance – Improve performance of the query to delete version transients by removing unneeded “ORDER BY”. #21274
  • Dev – REST API – Allows oAuth1.0a authentication under SSL.
  • Dev – REST API – Fix position param for images. #20497
  • Dev – REST API – Handle children products deletion regardless of type. #20670
  • Dev – Added woocommerce_increase_coupon_usage_count and woocommerce_decrease_coupon_usage_count action hooks to increase extensibility of Coupons. #19981
  • Dev – Add endpoints to account menu items filter. #19980
  • Dev – Added qty param to wc_add_to_cart_message filter. #19817
  • Dev – Added woocommerce_search_products_ids filter. #20160
  • Dev – Introduced woocommerce_cart_calculate_shipping_address field to allow manipulation of cart shipping calculator data. #20046
  • Dev – Introduced woocommerce_shipping_calculator_enable_country filter. #20046
  • Dev – Pass product id to backorder notification. #20416
  • Dev – Added woocommerce_cart_shipping_total filter to control shipping display. #20591
  • Dev – Refactor “Order again” handling to separate logic better. #20606
  • Dev – Added ‘woocommerce_products_admin_list_table_filters’ filter to make it easier to customize the products list table filters. #20634
  • Dev – Added woocommerce_shipping_method_add_rate_args and woocommerce_shipping_method_add_rate filters. #20633
  • Dev – Added woocommerce_coupon_validate_user_usage_limit filter. #20630
  • Dev – Add hooks needed for product custom tables feature plugin. #20520
  • Dev – Added new filter to ‘Item in quotes’ translation for messages. #20714
  • Dev – Add ‘woocommerce_shutdown_error’ hook triggered on request termination with an error. #20787
  • Dev – New filter ‘woocommerce_admin_meta_boxes_variations_count’ to customize the shown count of variations. #21067
  • Dev – Added ability to query products that have a field set in wc_get_products/WC_Product_Query using the wildcard symbol ‘*’. #21162
  • Dev – Added a JavaScript events before and after the order total recalculation on the Edit Order page. #21181
  • Dev – Check for needs_payment instead of has_status( 'pending' ) in PayPal PDT handler for custom order status support. #21200
  • Dev – Added form action hooks for edit account and login templates. #21248
  • Dev – Add action for when system tools are run. #21270
  • Dev – Add – woocommerce_restock_refunded_items filter to control default state of the restock option when refunding items on an order. #21314
  • Dev – Add an extensible/swappable job queue via WC_Action_Queue and WC_Queue_Interface. #20030
  • Dev – Use WC_Action_Queue for schedule and delivery of webhooks. #20030
  • Dev – Include Action Scheduler v2.1.0 and use it for the default job queue. #21424 / #20030
  • Dev – Save reviews under the ‘review’ comment type. #21305
  • Localization – Updated IT provinces. #20286
  • Localization – Eircode validation. #20330
  • Localization – Disable postcode requirement for Bahrain. #21103
  • Localization – Make postcode field optional and hidden for Nigeria and label State. #21056
  • Localization – Make Romania state selection mandatory. #21180
  • Localization – Make city field optional and hidden for Singapore addresses. #21016

See changelog for all versions.