diff --git a/.codeclimate.yml b/.codeclimate.yml
index dcf25bd147f..7395ee88e39 100644
--- a/.codeclimate.yml
+++ b/.codeclimate.yml
@@ -18,7 +18,6 @@ ratings:
- "includes/*"
exclude_paths:
- "tests/"
-- "apigen/"
- "sample-data/"
- "i18n/"
- "includes/api/legacy/"
diff --git a/.gitattributes b/.gitattributes
index d728da00bed..1b5a2bb019a 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,5 +1,4 @@
/.* export-ignore
-apigen* export-ignore
CODE_OF_CONDUCT.md export-ignore
CHANGELOG.txt export-ignore
composer.* export-ignore
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 4491e491985..138868f9cc3 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -42,16 +42,30 @@ https://woocommerce.com/contact-us/
- [WooExperts](https://woocommerce.com/experts/)
- [Codeable](https://codeable.io/)
+## Build process
+
+The source code found in GitHub doesn't contains any compiled CSS or JS files, also doesn't include some features like Blocks and REST API, requiring a build process.
+
+In a terminal go to your WooCommerce installation, and run:
+
+```bash
+npm install
+composer install
+npm run build
+```
+
+Note that it's required to have installed [Node.js to run NPM](https://nodejs.org/en/) and [Composer](https://getcomposer.org/).
+
## Coding Guidelines
- **Ensure you stick to the [WordPress Coding Standards](https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/)**
-- Install our pre-commit hook using composer. It'll help with the Coding Standards. To install run `composer install` from the command line within the woocommerce plugin directory.
+- Run our build process described in the section above, it will install our pre-commit hook, code sniffs, dependencies, and more.
- Ensure you use LF line endings in your code editor. Use [EditorConfig](http://editorconfig.org/) if your editor supports it so that indentation, line endings and other settings are auto configured.
- When committing, reference your issue number (#1234) and include a note about the fix.
- Ensure that your code is compatible with PHP 5.2+.
- Push the changes to your fork and submit a pull request on the master branch of the WooCommerce repository. Existing maintenance branches will be maintained by WooCommerce developers.
-Please **don't** modify the changelog or update the .pot files. These will be maintained by the WooCommerce team.
+Please **don't** modify the changelog, it will be maintained by the WooCommerce team.
## Translating WooCommerce
diff --git a/.gitignore b/.gitignore
index 6d673efc6ba..6ee0e647e89 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,15 +18,19 @@ none
# Sass
.sass-cache/
+# Compiled CSS
+/assets/css/*.css
+
+# Minified JS
+/assets/js/admin/*.min.js
+/assets/js/frontend/*.min.js
+
# OS X metadata
.DS_Store
# Windows junk
Thumbs.db
-# ApiGen
-/wc-apidocs/
-
# Behat/CLI Tests
tests/cli/installer
tests/cli/composer.phar
@@ -49,3 +53,6 @@ contributors.md
# Screenshots for e2e tests failures
/screenshots/
+
+# Language files
+i18n/languages/woocommerce.pot
diff --git a/.scrutinizer.yml b/.scrutinizer.yml
index 988a1febcbe..0fd5723b7c4 100644
--- a/.scrutinizer.yml
+++ b/.scrutinizer.yml
@@ -23,7 +23,6 @@ checks:
verify_property_names: false
filter:
excluded_paths:
- - apigen/
- sample-data/
- i18n/
- includes/api/legacy/
diff --git a/.travis.yml b/.travis.yml
index bfdd66de349..e5b5913d052 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -19,15 +19,11 @@ php:
env:
- WP_VERSION=latest WP_MULTISITE=0
-# Additional tests against stable PHP (min recommended version is 5.6) and past supported versions of WP
+# Additional tests against stable PHP (min version is 5.6)
# and code coverage report.
matrix:
fast_finish: true
include:
- - php: 5.3
- dist: precise
- - php: 5.2
- dist: precise
- name: "Coding standard check"
php: 7.2
env: WP_VERSION=latest WP_MULTISITE=0 RUN_PHPCS=1
@@ -59,18 +55,10 @@ before_script:
echo "xdebug.ini does not exist"
fi
- |
- # Install WP Test suite, install PHPUnit globally if needed:
+ # Install WP Test suite, install PHPUnit globally:
if [[ ! -z "$WP_VERSION" ]]; then
bash tests/bin/install.sh woocommerce_test root '' localhost $WP_VERSION
- # PHP 5.2 does not have composer, do not try to run it.
- if [[ ${TRAVIS_PHP_VERSION:0:3} != "5.2" ]]; then
- composer global require "phpunit/phpunit=4.8.*|6.5.*"
- fi
- fi
- - |
- # Install wpcs globally if needed:
- if [[ ${RUN_PHPCS} == 1 ]] && [[ ${TRAVIS_PHP_VERSION:0:3} != "5.2" ]]; then
- composer require woocommerce/woocommerce-sniffs
+ composer global require "phpunit/phpunit=4.8.*|6.5.*"
fi
script:
diff --git a/.wordpress-org/screenshot-1.jpg b/.wordpress-org/screenshot-1.jpg
new file mode 100644
index 00000000000..d5383232d5b
Binary files /dev/null and b/.wordpress-org/screenshot-1.jpg differ
diff --git a/.wordpress-org/screenshot-1.png b/.wordpress-org/screenshot-1.png
deleted file mode 100644
index 35b64a2d0a3..00000000000
Binary files a/.wordpress-org/screenshot-1.png and /dev/null differ
diff --git a/.wordpress-org/screenshot-2.jpg b/.wordpress-org/screenshot-2.jpg
new file mode 100644
index 00000000000..0fef945a86e
Binary files /dev/null and b/.wordpress-org/screenshot-2.jpg differ
diff --git a/.wordpress-org/screenshot-2.png b/.wordpress-org/screenshot-2.png
deleted file mode 100644
index 328bc2dc0ba..00000000000
Binary files a/.wordpress-org/screenshot-2.png and /dev/null differ
diff --git a/.wordpress-org/screenshot-3.jpg b/.wordpress-org/screenshot-3.jpg
new file mode 100644
index 00000000000..2468c849b03
Binary files /dev/null and b/.wordpress-org/screenshot-3.jpg differ
diff --git a/.wordpress-org/screenshot-3.png b/.wordpress-org/screenshot-3.png
deleted file mode 100644
index 4fd266e8238..00000000000
Binary files a/.wordpress-org/screenshot-3.png and /dev/null differ
diff --git a/.wordpress-org/screenshot-4.jpg b/.wordpress-org/screenshot-4.jpg
new file mode 100644
index 00000000000..a671aef0770
Binary files /dev/null and b/.wordpress-org/screenshot-4.jpg differ
diff --git a/.wordpress-org/screenshot-4.png b/.wordpress-org/screenshot-4.png
deleted file mode 100644
index 9073954b19b..00000000000
Binary files a/.wordpress-org/screenshot-4.png and /dev/null differ
diff --git a/.wordpress-org/screenshot-5.jpg b/.wordpress-org/screenshot-5.jpg
new file mode 100644
index 00000000000..c3049936a43
Binary files /dev/null and b/.wordpress-org/screenshot-5.jpg differ
diff --git a/.wordpress-org/screenshot-5.png b/.wordpress-org/screenshot-5.png
deleted file mode 100644
index 67474bb5486..00000000000
Binary files a/.wordpress-org/screenshot-5.png and /dev/null differ
diff --git a/.wordpress-org/screenshot-6.jpg b/.wordpress-org/screenshot-6.jpg
new file mode 100644
index 00000000000..8d00d366518
Binary files /dev/null and b/.wordpress-org/screenshot-6.jpg differ
diff --git a/.wordpress-org/screenshot-6.png b/.wordpress-org/screenshot-6.png
deleted file mode 100644
index 53f81556e6e..00000000000
Binary files a/.wordpress-org/screenshot-6.png and /dev/null differ
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 8812ed22b4c..f664926f991 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -1,5 +1,299 @@
== Changelog ==
+= 3.6.4 - 2019-05-27 =
+* Enhancement - Add notice to install WooCommerce Admin. #23659
+* Fix - Tracks: Add check for OBW is-opting-in. #23772
+* Fix - Use HTTP protocol for schema.org's availability. #23774
+* Fix - Coupon usage limit checks based on email never ran when orders are created via wp-admin. #23775
+* Fix - Duplicate out of stock notices when navigating from cart to checkout and back to cart. #23791
+* Fix - Remove sensitive information from refund reason when manually refunding an order, and move it to an order note. #23739
+* Tweak - Tracks: set cookie on admin_init instead of wp_loaded. #23787
+* Dev - Fixed number of arguments for all occurrences of the woocommerce_valid_order_statuses_for_cancel filter. #23704
+* Dev - REST API - Stop order creation if invalid data is sent. #23325
+* Dev - Introduce new wc_load_cart function for dynamically loading and initializing the cart. #23794
+
+= 3.6.3 - 2019-05-16 =
+* Fix - State not required for Serbia. #23430
+* Fix - # symbol in product category name broke product export. #23454
+* Fix - XML export caused fatal errors due to Action Scheduler adding invalid characters. #23456
+* Fix - Invalid password messages when password contains backslashes. #23499
+* Fix - Dismiss button in WC admin notices "legacy_shipping" and "no_shipping_methods" were not clickable. #23517
+* Fix - WC $wpdb->tables not defined early enough. #23529
+* Fix - Tracks JS not printed on last page of OBW. #23519
+* Fix - Error in the logic used to build fields for external products when the query string contained full-stops, pluses or spaces in the values of the parameters. #23535
+* Fix - UI page width issue on OBW. #23526
+* Fix - Customer address not auto populated on checkout after registering and filling in address prior. #23528
+* Fix - Available WooCommerce extension updates not showing in System Status report. #23601
+* Fix - wc_change_get_terms_defaults throwing undefined index notices. #23611
+* Fix - System Status report alway showing checkmark next to Connected to WooCommerce.com. #23617
+* Fix - State field never populated when loading customer address on order via wp-admin. #23615
+* Fix - Order sorting not working in wp-admin when Yoast SEO active. #23590
+* Fix - Attribute ordering not working in product edit screen. #23625
+* Fix - Tracks reporting incorrect order totals due to refunds being excluded in calculation. #23671
+* Fix - Reload state options when creating a new order in WP-Admin and changing country. #23602
+* Fix - New webhooks not showing in the webhook admin list page when you have object caching enabled. #23713
+* Fix - Missing coupon expiry dates, restore coupons expiry_date backward compatibility. #23714
+* Fix - Bulk stock update could result in all products set to out of stock, change ensures consistency between db and Product instance in memory. #23534
+* Fix - Dashboard stats widget including unpublished products in out of stock and low in stock counts. #23734
+* Fix - PayPal payment not captured when you transition an order from a custom order status to completed or processing. #23634
+* Tweak - Confirm before saving empty list of countries to sell to in settings. #23597
+* Tweak - Change default WC API version used when creating webhooks to the latest WC API version. #23515
+* Tweak - Report a bug button now points to the new issue template in GitHub. #23580
+* Tweak - Do not display taxes in totals columns when taxes not enabled. #23579
+* Tweak - WC WP-CLI upgrade routine mimics wp-admin upgrade when no updates found by setting DB version to current version. #23666
+* Tweak - Template caching now cache based on WC_VERSION to avoid issues with symlinked plugin folders. #23546
+* Tweak - OBW payment gateway selection defaults. #23690
+* Localization - Add Serbia locale defaults. #23428
+* Localization - Add address format for Serbia. #23429
+
+= 3.6.2 - 2019-04-24 =
+* Fix - Fix CSS classname conflict with themes due to missing product object global. #23377
+* Fix - Fix security check on email template preview page. #23356
+* Fix - Prevent `wc_ascii_uasort_comparison` throwing notices in some server configs. #23363
+* Fix - `is_request_to_rest_api` should check for wc endpoints only. #23372
+* Fix - Fixed use of get_term_meta in REST API endpoints. #23457
+* Fix - Fixed missing closing tag for log-in link for reviews. #23445
+* Fix - Fixed average_rating in the db upgrade routine for lookup table. #23465
+* Fix - More useful update notices if cron is disabled. #23383
+* Fix - Prevent term ordering queries inserted by wc_terms_clauses from conflicting with custom where clauses. #23449
+* Fix - When product lookup table is generating for the first time, avoid wrong stock statuses being set for variable products. #23455
+* Fix - Ensure webhooks respect registered order args. #23444
+* Fix - REST API - Return custom attribute with defined name instead of lowercase name. #23482
+* Fix - Fix 3.6 conflict with Woo Blocks plugin 1.4. #23399
+* Fix - Allow default sorting of WC taxonomies to be overwritten by get_terms orderby. #23477
+* Fix - Improve wc_rating_count lookup table generation with large numbers of posts. #23486
+* Fix - Avoid recurring event for suggestions updates. #23484
+* Fix - Revert selectWoo escaping change and instead escape user names. Avoids issues displaying slash characters. #23334
+* Fix - If an empty array is passed to the v3 API for images, images should be unset. #23339
+* Fix - Fix attribute renaming when dealing with unicode characters. #23132
+* Fix - Preserve full-stops in external product URLs. #23196
+* Fix - Add check for VAT exemption inside `display_prices_including_tax`. #23201
+* Fix - Avoid post update in `wc_update_product_stock` to prevent product titles being updated. #23249
+* Fix - Updated Back to Items link when editing attribute terms. #23238
+* Fix - Network orders widget not showing orders when installed as a network plugin. #23270
+* Fix - Correctly map attributes in CSV when the number is not at the end of the cell. #23251
+* Fix - Fixed highlighting of Orders list item in My Account when looking at individual order. #23236
+* Fix - Applies `wp_strip_all_tags` to the line item name when building PayPal request URL. #23297
+* Fix - Non int value handling in `wc_let_to_num`. #23329
+* Fix - Style span.description elements after select2 boxes. #23252
+* Fix - Switch to subquery for sale products to prevent large query errors on some hosting environments. #23266
+* Fix - Add offerCount to variable product structured data. #23349
+* Fix - Cart widget - Allow title to be removed. #23370
+* Fix - Prevent order data being escaped incorrectly on save when using quotes. #23380
+* Fix - Prevent plugins causing notices by calling get_catalog_ordering_args incorrectly. #23451
+* Fix - Product list view shipping class filter display correct products. #23446
+* Fix - Twenty Seventeen On Sale badge hidden behind product image. #23450
+* Fix - Correct postcode validation on my-account page. #23483
+* Fix - Fixed compatibility with the Jetpack Beta Tester plugin when loading the Tracks client library. #23397
+* Fix - Updated anchor for "How to create a child theme" with the correct target address in the Codex. #23469
+* Tweak - Update action scheduler to version 2.2.5. #23489
+* Tweak - Removed 2 old admin notices for featured moved in past versions. #23263
+* Localization - Make the state/county field optional at checkout for Greece. #23365
+
+= 3.6.1 - 2019-04-18 =
+* Fix - Remove calls to 'header_register_callback' to prevent conflicts with some hosting providers and PHP versions.
+
+= 3.6.0 - 2019-04-17 =
+* Enhancement - Merged WooCommerce Gutenberg Products Block feature plugin. Adds blocks for the new editor, including
+ hand picked products, featured products, products by category/attribute, sale products, new products, top rated
+ products, and best selling products. #22954
+* Enhancement - Only include order erasure bulk action if erasure is enabled in settings. #22354
+* Enhancement - Customer notes containing URLs now automatically converts to clickable links. #21927
+* Enhancement - Add increase and decrease stock options to bulk edit form. #22475
+* Enhancement - Allow states in zones to be searched by country name. #22339
+* Enhancement - Added registration success notices to account pages. #22650
+* Enhancement - Store notice is visible again if the notice text is changed. #22645
+* Enhancement - Add aria-label attribute to shop orderby selector to improve accessibility. #22683
+* Enhancement - When adding, editing, and deleting items manually from orders, the corresponding product stock will be
+ updated to reflect the event and an order note will log the event. #22329
+* Enhancement - Added suggestions for official extensions to Products, Edit Product and Orders screens.
+* Enhancement - Store attribute values as post_excerpt for variations to support easier searching for variations. #22083
+* Enhancement - Improved username generation and introduced wc_create_new_customer_username function. #23145
+* Enhancement - Allow opting out of Marketplace Suggestions 23218
+* Tweak - Generalize shipping estimate text on cart page. #22467
+* Tweak - Include auto draft orders in order list filters. #22380
+* Tweak - Only include the network orders widget on the main site dashboard. #22318
+* Tweak - Only show available shipping continents when selecting shipping zone region. #22131
+* Tweak - Use Shortcode block on default WooCommerce pages. #21817
+* Tweak - Show full category hierarchy in product URLs when term IDs are not sequential. #22526
+* Tweak - Make sure account and checkout endpoints only work under account and checkout pages. #22631
+* Tweak - Show loading graphic when order form is submitted. #22664
+* Tweak - Add alt text to gallery images #22863
+* Tweak - Improved `display_name` generation during checkout. #22786
+* Tweak - Send correct calling code and phone number to PayPal standard when using non-US addresses. #22693
+* Tweak - Added tooltip to refund-amount input box and made it readonly when taxes are enabled. #22820
+* Tweak - Remove admin alert for the WooCommerce Gutenberg Products Block feature plugin. #22982
+* Tweak - Setup Wizard: support keyboard navigation to toggle on/off features. #22936
+* Tweak - Set reply-to address for all emails. #22979
+* Tweak - Setup wizard redirection improvements. #22977
+* Tweak - Simplify display of discount amounts within orders. #22949
+* Tewak - Remove Marketplace Suggestions from product listing page. #23211
+* Template - Moved the order of rememberme checkboxes for accessibility so they tab in order. #21454
+* Template - New structure for attributes template, including new `woocommerce_display_product_attributes` filter. #22480
+* Template - Admin cancelled order email reworded. #22971
+* Dev - Update action scheduler to version 2.2.2. #23162
+* Dev - Update action scheduler to version 2.2.1. #23016
+* Dev - Use ActionScheduler for database updates. Improved update notice. #22904
+* Dev - Introduce `woocommerce_reviews_title` filter. #22216
+* Dev - Added `woocommerce_cheque_process_payment_order_status` filter allowing plugins to change the order status to the Cheque gateway. #21402
+* Dev - Add the current coupon object to the `woocommerce_get_shop_coupon_data` filter. #21442
+* Dev - New filter `woocommerce_gallery_image_html_attachment_image_params` for manipulating gallery images. #22005
+* Dev - New filter `woocommerce_widget_get_current_page_url` for manipulating links in widgets. #21537
+* Dev - Move wc_get_template filter to allow plugins to register locations for template files that do not exist in WooCommerce core. #21764
+* Dev - Add support for custom classes on global/quantity-input.php. #21553
+* Dev - Pass product object to `woocommerce_add_to_cart_redirect` filter where appropriate. #22123
+* Dev - Add support for forgetting the cart contents and user session when switching between accounts using the User Switching plugin. #21991
+* Dev - Added a consistent form class to the Track Order Form. #21991
+* Dev - Add $orderby and $order params to filter `woocommerce_get_catalog_ordering_args`. #22257
+* Dev - Add new pre query filter to WC_Product_Data_Store_CPT::search_products(). #22165
+* Dev - Added additional parameters to the `woocommerce_variation_option_name` filter. #21153
+* Dev - Added new filter `woocommerce_get_min_max_price_meta_query`. #22255
+* Dev - Added a filter to WC_REST_CRUD_Controller::get_collection_params method to allow developers to change params in
+ the same way as WP_Rest_Posts_controller::get_collection_params. #21562
+* Dev - Add $zone param to woocommerce_shipping_zone_before_methods_table and woocommerce_shipping_zone_after_methods_table actions. #21961
+* Dev - Added `woocommerce_geolocation_ajax_get_location_hash` filter. #22350
+* Dev - Added `woocommerce_variation_prices_array` filter. #21003
+* Dev - Added `wc_emptied_cart` javascript event when cart is emptied. #22469
+* Dev - Switched `woocommerce_ordered_again` hook to ref_array. #22425
+* Dev - `woocommerce_checkout_before_order_review_heading` action added in checkout form template. #22481
+* Dev - Added `woocommerce_variation_header` hook in variations list. #21341
+* Dev - Add a filter, woocommerce_current_user_can_edit_customer_meta_fields, to bypass manage_woocommerce when editing customer meta fields. #22277
+* Dev - Adds filter on the return value of function 'get_item_tax_rates'. This gives developers the possibility to
+ prevent the mandatory caching of tax rates. #22488
+* Dev - Add filters for mail callback in WC_Email::send method. #22394
+* Dev - Add an instance method to WC_Admin_Taxonomies. #21884
+* Dev - Added `woocommerce_order_is_pending_statuses` filter and `wc_get_is_pending_statuses` function. #22409
+* Dev - Filter save_payment_method_checkbox to allow "Save to account" checkbox to be removed from the checkout form. #21859
+* Dev - Added triggers to the gallery script to allow 3rd parties to run scripts before and after initialization. #22501
+* Dev - Added `woocommerce_add_to_cart_qty_html` filter. #21069
+* Dev - Prevent extract from polluting hook arguments in wc_get_template(). #21722
+* Dev - Add `woocommerce_pre_remove_cart_item_from_session` hook to allow removal of cart items when the cart is loaded from the session. #22290
+* Dev - Add `$attribute` to `woocommerce_product_option_terms` filter. #21648
+* Dev - Added error handling and timeout to cart fragment ajax call. #21043
+* Dev - Remove unused legacy 'woocommerce_lock_down_admin' option and use filter only instead. #17796
+* Dev - Allow custom settings sections in the Shipping tab. #21719
+* Dev - Update Emogrifier library to 2.1. #22342
+* Dev - Moved core state codes to a single file. #22339
+* Dev - Adds filter for product categories displayed by `product_categories` shortcode. #22571
+* Dev - Moves cart hash calculation to WC_Cart class. #21050
+* Dev - Removed deprecated Simplify gateway. #22410
+* Dev - Added `woocommerce_paypal_force_one_line_item` filter to control how items are sent to PayPal. #22653
+* Dev - Added `woocommerce_update_product_stock_query` to filter the direct sql query to update product stock. #22672
+* Dev - Added `woocommerce_product_loop_title_classes` filter to modify product title loop classes. #22717
+* Dev - Delay `woocommerce_loaded` hook until all plugins are loaded. #22536
+* Dev - Added `woocommerce_product_price_class` filter to modify product price classes. #22748
+* Dev - `woocommerce_product_stock_status_options` filter added for stock status options. #22834
+* Dev - `woocommerce_before_cart_emptied` action before cart is emptied. #22846
+* Dev - Added filters for shipping options - `woocommerce_shipping_ID_option` and `woocommerce_shipping_ID_instance_option`. #22771
+* Dev - Refactor comment/rating update functions. #22909
+* Dev - Introduced wc_sanitize_phone_number() function. #22962
+* Dev - Added `woocommerce_get_product_subcategories_cache_key` filter to allow the cache to be renamed if for instance
+ the site runs in multiple languages and needs a unique cache per language. #22915
+* Dev - Inactive, MU, Dropin plugins and WooCommerce.com account connection status added to System Status Report. #22887
+* Dev - Make error handling consistent in payment processing for pay page and checkout. #22916
+* Dev - Improved usage and event tracking (if opted in). #22955
+* Dev - Pass class context to woocommerce_email_styles filter. #23027
+* Fix - Use correct address for taxes when applying/removing coupons. #22802
+* Fix - Hide ratings on the shop page when reviews are disabled. #22476
+* Fix - Fix W3C validation of single product page quantity input. #22333
+* Fix - Give product variations a unique guid after creation. #22324
+* Fix - Deduct correct refunded amounts in calculated net daily sales export CSV. #22518
+* Fix - Country sorting for stores which use a language that uses a lot of accented characters, e.g. Spanish. #22417
+* Fix - Customer VAT exempt status now carries through to order when placed via checkout. #22458
+* Fix - Handle full refunds for taxes by code report. #21843
+* Fix - Option "Used for variations" should show only for variable products when saving attributes. #22524
+* Fix - Allow pa_ in product attribute slugs. #22112
+* Fix - Fix customer creation dates in API. #22269
+* Fix - Get widget instance setting defaults so it shows in customiser before save. #22345
+* Fix - PR state codes. #22339
+* Fix - Allow selecting states from the Country / State drop-down for your store address when you have the option
+ enabled to sell to specific countries. #22339
+* Fix - Restrict the price filter widget to filtering the main product query. #22621
+* Fix - Default placeholder image resizing. #22443
+* Fix - HTML tags should be stripped from description in Structured Data of Product. #22596
+* Fix - For logged in customers, pull default address fields from customer object, not session object, to avoid incorrect mixes of data. #22392
+* Fix - Misc tax rounding improvements. #22420
+* Fix - Respect shop page subcategories setting when `page/N/` is added to the URL. #22589
+* Fix - Check for decoded taxonomy name when unsetting product terms. #22740
+* Fix - If date paid is not set but payment complete status has passed, set it. #22735
+* Fix - Prevent webhooks for drafts, and correct create vs updated for manual orders. #22731
+* Fix - Ignore invalid default customer locations. #22357
+* Fix - The state select field was missing a placeholder. #22357
+* Fix - Fix state field rendering when customer address is not in a valid selling country. #22357
+* Fix - Correctly handle negative fees when using the REST API. #22782
+* Fix - Make sure local_pickup taxes do not hang around when local_pickup is not available for the selected location during checkout. #22826
+* Fix - Remove Plugin and Theme background installer hooks, cannot run as there are no events scheduled for it. #22799
+* Fix - Trigger zoom if moving cursor over image quickly in product gallery. #22784
+* Fix - PayPal: Add meta data, before changing order status. #22892
+* Fix - Make price filter widget tax aware when you have excl prices entered but show prices incl of tax. #22540
+* Fix - Loop attribute panels to disable options rather than look at values to prevent notices. #22891
+* Fix - When deleting zone methods, also remove setting options. #22867
+* Fix - Correctly show state fields after posting the edit address form. #22948
+* Fix - Validate coupon usage limit for manual orders correctly before order is saved. #22980
+* Fix - Make coupon code sanitization match post_title sanitization. #22945
+* Fix - Ensure WC_Helper sees plugin activation events via CLI. #22972
+* Fix - Setup wizard redirection improvements. #22977
+* Fix - Correctly show stock status for products when manually creating an order in the admin. #22997
+* Fix - After logging in update customer session ID. #23001
+* Fix - Narrow viewport css in setup wizard. #23033
+* Fix - Allow entering of date only ( no time ) when placing a singular product on sale. #22973
+* Fix - Download link URL in helper. #23146
+* Fix - Completed email wording update. #23128
+* Fix - REST API: Allow filtering by future status #23138
+* Fix - Update refund reason to make it clear process is manual. #23149
+* Fix - Hide stock status for variations when the parent is managing stock. #23069
+* Fix - Force variation product type in WC_Ajax::add_variation. #23131
+* Fix - WooCommerce writes current_theme_supports_woocommerce option on every regular page view. #23035
+* Fix - Update the rating request text in the footer to be friendlier for screen reader users. #23039
+* Fix - Null check variable before accessing its properties on checkout page. #23047
+* Fix - Recognize all input fields with ID for checkout fields. #23050
+* Fix - Avoid regenerating thumbnails on every page load. #21800
+* Fix - Changed 'private' methods on WC_Breadcrumb class to 'protected'. #23057
+* Fix - Jumping to top of page when dismissing store notice. #23066
+* Fix - Backwards compatibility issues with wc_get_template #23197
+* Fix - Remove date restriction of Facebook Plugin feature in OBW #23210
+* Fix - Updates to usage tracking logic #23231
+* Fix - Add get_post_status helper method and ensure prefix gets added for most statuses #23203
+* Fix - Add link to suggstions management #23229
+* Fix - Make usage tracking opt-out text more clear #23216
+* Fix - CSS Issues with suggestions display #23241
+* Fix - Product search may fail to return valid results when using the 'include' flag to search within a limited set.
+* Fix - Change aria-labelledby to aria-label on quantity input. #23186
+* Performance - Product meta data lookup table used for sorting and slow queries. #22718
+* Performance - Prime caches when reading variations. #22587
+* Performance - Only include REST API classes and objects during `rest_api_init` hook. #22615
+* Performance - Improved how versioned transients are set/cleanup to avoid cron. #22511
+* Performance - Optimized product CSS class functions to avoid multiple product reads and duplication. #22610
+* Performance - Improved caching of template loader, product types, and layered nav widget. #22612
+* Performance - Remove external lookup of IP addresses on localhost. #22608
+* Performance - Improved speed of the `find_matching_product_variation` variation lookup function. #22423
+* Performance - Prevent frontend code from being loaded during REST API. #21090
+* Performance - Load only active webhooks on pages and allow limits to be set by developers. #22760
+* Performance - Index on downloadable_product_permissions to improve speed when fetching downloads for customers. #22906
+* Performance - Improved term ordering queries, making the sorting apply by default via the DB query rather than sorting
+ all terms with PHP. Removed legacy term meta table usage. #22570
+* Performance - Use day, not time, in status widget for caching. #22950
+* Performance - Improve slow term ordering by using queries instead of php. #22570
+* Performance - Removes legacy woocomerce_termmeta table and swap out all calls to legacy term meta functions to the new WP ones. #22570
+* Performance - Apply term sorting using get_terms_defaults hook instead of custom parameters. #22570
+* Performance - Use pre_get_terms hook to detect menu_order sorting param and apply to the term query. Meta sorting is now possible through WP. #22570
+* Performance - Use terms_clauses hook to support numeric name sorting and to improve the menu order sorting so it works if meta is missing. #22570
+* Performance - Added caching to System Status Report. #22887
+* Performance - Delete empty meta on update in data-stores. #22773
+* Performance - Image regeneration edge cases. #22818
+* Performance - Don’t query for an order count unnecessarily. #22984
+* Performance - Add caching to attribute functions. #22938
+* Performance - Add ability to run product lookup table updates via WP CLI. #23031
+* Localization - Modify administrative regions of Greece to default to their english ISO 3166-2 names, instead of using the native GR names. #21945
+* Localization - Added US Minor Outlying Islands as states to avoid confusion with US. #22468
+* Localization - Dutch postcode validation. #22316
+* Localization - Made municipality address field optional for Latvia. #22487
+* Localization - Added new Venezuelan currency Bs S. #22435
+* Localization - Added Danish locale. #22495
+* Localization - Update Peruvian currency. #22602
+* Localization - Update CA address format. #22692
+* Localization - Updated JP field order. #22774
+
= 3.5.8 - 2019-04-16 =
* Security - Added escaping for states on the user profile screen.
* Security - Added escaping for PhotoSwipe captions.
@@ -3254,7 +3548,7 @@
* Feature - Allow setting the product post type slug to a static (non-translatable) text, mainly to be used for translating and WPML setups.
* Feature - Added lost password shortcode / email notification (thanks Max Rice).
* Feature - Simplified permalink/base settings now found in Settings > Permalinks.
-* Feature - Support more permalink structures (from https://codex.wordpress.org/Using_Permalinks)
+* Feature - Support more permalink structures (from https://wordpress.org/support/article/using-permalinks/)
* Feature - Added option to resend order emails, checkboxes select which one.
* Feature - New layered nav current filters widget. This lists active filters from all layered nav for de-selection.
* Feature - Added the option to sell products individually (only allow 1 in the cart).
diff --git a/Gruntfile.js b/Gruntfile.js
index 846e65b6557..a7d0cbc3c9c 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -88,6 +88,8 @@ module.exports = function( grunt ) {
'<%= dirs.js %>/photoswipe/photoswipe.min.js': ['<%= dirs.js %>/photoswipe/photoswipe.js'],
'<%= dirs.js %>/photoswipe/photoswipe-ui-default.min.js': ['<%= dirs.js %>/photoswipe/photoswipe-ui-default.js'],
'<%= dirs.js %>/round/round.min.js': ['<%= dirs.js %>/round/round.js'],
+ '<%= dirs.js %>/selectWoo/selectWoo.full.min.js': ['<%= dirs.js %>/selectWoo/selectWoo.full.js'],
+ '<%= dirs.js %>/selectWoo/selectWoo.min.js': ['<%= dirs.js %>/selectWoo/selectWoo.js'],
'<%= dirs.js %>/stupidtable/stupidtable.min.js': ['<%= dirs.js %>/stupidtable/stupidtable.js'],
'<%= dirs.js %>/zeroclipboard/jquery.zeroclipboard.min.js': ['<%= dirs.js %>/zeroclipboard/jquery.zeroclipboard.js']
}
@@ -195,7 +197,6 @@ module.exports = function( grunt ) {
options: {
potFilename: 'woocommerce.pot',
exclude: [
- 'apigen/.*',
'vendor/.*',
'tests/.*',
'tmp/.*'
@@ -228,7 +229,6 @@ module.exports = function( grunt ) {
files: {
src: [
'**/*.php', // Include all files
- '!apigen/**', // Exclude apigen/
'!includes/libraries/**', // Exclude libraries/
'!node_modules/**', // Exclude node_modules/
'!tests/**', // Exclude tests/
@@ -245,13 +245,6 @@ module.exports = function( grunt ) {
stdout: true,
stderr: true
},
- apidocs: {
- command: [
- 'vendor/bin/apigen generate -q',
- 'cd apigen',
- 'php hook-docs.php'
- ].join( '&&' )
- },
e2e_test: {
command: 'npm run --silent test:single tests/e2e-tests/' + grunt.option( 'file' )
},
@@ -293,9 +286,6 @@ module.exports = function( grunt ) {
// Clean the directory.
clean: {
- apidocs: {
- src: [ 'wc-apidocs' ]
- },
blocks: {
src: [
'<%= dirs.js %>/blocks',
@@ -313,7 +303,6 @@ module.exports = function( grunt ) {
dist: {
src: [
'**/*.php', // Include all php files.
- '!apigen/**',
'!includes/api/legacy/**',
'!includes/libraries/**',
'!node_modules/**',
@@ -432,16 +421,16 @@ module.exports = function( grunt ) {
'concat'
]);
+ grunt.registerTask( 'assets', [
+ 'js',
+ 'css'
+ ]);
+
grunt.registerTask( 'blocks', [
'clean:blocks',
'copy'
]);
- grunt.registerTask( 'docs', [
- 'clean:apidocs',
- 'shell:apidocs'
- ]);
-
grunt.registerTask( 'contributors', [
'prompt:contributors',
'shell:contributors'
diff --git a/apigen.neon b/apigen.neon
deleted file mode 100644
index 33cbe52eb1c..00000000000
--- a/apigen.neon
+++ /dev/null
@@ -1,20 +0,0 @@
-destination: wc-apidocs
-templateConfig: apigen/theme-woocommerce/config.neon
-extensions: [php]
-source:
- - woocommerce.php
- - includes
-exclude:
- - includes/libraries/
- - includes/api/legacy/
-charset: [UTF-8]
-main: WC
-title: WooCommerce Code Reference
-baseUrl: https://docs.woocommerce.com/wc-apidocs/
-templateTheme: default
-php: false
-sourceCode: true
-tree: true
-deprecated: true
-todo: true
-download: false
diff --git a/apigen/hook-docs.php b/apigen/hook-docs.php
deleted file mode 100644
index 74087e50198..00000000000
--- a/apigen/hook-docs.php
+++ /dev/null
@@ -1,226 +0,0 @@
-' . $hook . '';
- }
-
- public static function process_hooks() {
- self::$files_to_scan = array();
-
- self::$files_to_scan['Template Files'] = self::get_files( '*.php', GLOB_MARK, '../templates/' );
- self::$files_to_scan['Template Functions'] = array( '../includes/wc-template-functions.php', '../includes/wc-template-hooks.php' );
- self::$files_to_scan['Shortcodes'] = self::get_files( '*.php', GLOB_MARK, '../includes/shortcodes/' );
- self::$files_to_scan['Widgets'] = self::get_files( '*.php', GLOB_MARK, '../includes/widgets/' );
- self::$files_to_scan['Data Stores'] = self::get_files( '*.php', GLOB_MARK, '../includes/data-stores' );
- self::$files_to_scan['Core Classes'] = array_merge(
- self::get_files( '*.php', GLOB_MARK, '../includes/' ),
- self::get_files( '*.php', GLOB_MARK, '../includes/abstracts/' ),
- self::get_files( '*.php', GLOB_MARK, '../includes/customizer/' ),
- self::get_files( '*.php', GLOB_MARK, '../includes/emails/' ),
- self::get_files( '*.php', GLOB_MARK, '../includes/export/' ),
- self::get_files( '*.php', GLOB_MARK, '../includes/gateways/' ),
- self::get_files( '*.php', GLOB_MARK, '../includes/import/' ),
- self::get_files( '*.php', GLOB_MARK, '../includes/shipping/' )
- );
-
- self::$files_to_scan = array_filter( self::$files_to_scan );
-
- $scanned = array();
-
- ob_start();
-
- $index = array();
-
- foreach ( self::$files_to_scan as $heading => $files ) {
- $index[] = '' . $heading . '';
- }
-
- echo '
';
- echo '
Action and Filter Hook Reference
';
- echo '
-
This is simply a list of action and filter hooks found within WooCommerce files. View the source to see supported params and usage.
-
' . implode( ', ', $index ) . '
-
';
-
- foreach ( self::$files_to_scan as $heading => $files ) {
- self::$custom_hooks_found = array();
-
- foreach ( $files as $f ) {
- self::$current_file = basename( $f );
- $tokens = token_get_all( file_get_contents( $f ) );
- $token_type = false;
- $current_class = '';
- $current_function = '';
-
- if ( in_array( self::$current_file, $scanned ) ) {
- continue;
- }
-
- $scanned[] = self::$current_file;
-
- foreach ( $tokens as $index => $token ) {
- if ( is_array( $token ) ) {
- $trimmed_token_1 = trim( $token[1] );
- if ( T_CLASS == $token[0] ) {
- $token_type = 'class';
- } elseif ( T_FUNCTION == $token[0] ) {
- $token_type = 'function';
- } elseif ( 'do_action' === $token[1] ) {
- $token_type = 'action';
- } elseif ( 'apply_filters' === $token[1] ) {
- $token_type = 'filter';
- } elseif ( $token_type && ! empty( $trimmed_token_1 ) ) {
- switch ( $token_type ) {
- case 'class' :
- $current_class = $token[1];
- break;
- case 'function' :
- $current_function = $token[1];
- break;
- case 'filter' :
- case 'action' :
- $hook = trim( $token[1], "'" );
- $hook = str_replace( '_FUNCTION_', strtoupper( $current_function ), $hook );
- $hook = str_replace( '_CLASS_', strtoupper( $current_class ), $hook );
- $hook = str_replace( '$this', strtoupper( $current_class ), $hook );
- $hook = str_replace( array( '.', '{', '}', '"', "'", ' ', ')', '(' ), '', $hook );
- $loop = 0;
-
- // Keep adding to hook until we find a comma or colon
- while ( 1 ) {
- $loop ++;
- $prev_hook = is_string( $tokens[ $index + $loop - 1 ] ) ? $tokens[ $index + $loop - 1 ] : $tokens[ $index + $loop - 1 ][1];
- $next_hook = is_string( $tokens[ $index + $loop ] ) ? $tokens[ $index + $loop ] : $tokens[ $index + $loop ][1];
-
- if ( in_array( $next_hook, array( '.', '{', '}', '"', "'", ' ', ')', '(' ) ) ) {
- continue;
- }
-
- if ( in_array( $next_hook, array( ',', ';' ) ) ) {
- break;
- }
-
- $hook_first = substr( $next_hook, 0, 1 );
- $hook_last = substr( $next_hook, -1, 1 );
-
- if ( '{' === $hook_first || '}' === $hook_last || '$' === $hook_first || ')' === $hook_last || '>' === substr( $prev_hook, -1, 1 ) ) {
- $next_hook = strtoupper( $next_hook );
- }
-
- $next_hook = str_replace( array( '.', '{', '}', '"', "'", ' ', ')', '(' ), '', $next_hook );
-
- $hook .= $next_hook;
- }
-
- if ( isset( self::$custom_hooks_found[ $hook ] ) ) {
- self::$custom_hooks_found[ $hook ]['file'][] = self::$current_file;
- } else {
- self::$custom_hooks_found[ $hook ] = array(
- 'line' => $token[2],
- 'class' => $current_class,
- 'function' => $current_function,
- 'file' => array( self::$current_file ),
- 'type' => $token_type,
- );
- }
- break;
- }
- $token_type = false;
- }
- }
- }
- }
-
- foreach ( self::$custom_hooks_found as $hook => $details ) {
- if ( ! strstr( $hook, 'woocommerce' ) && ! strstr( $hook, 'product' ) && ! strstr( $hook, 'wc_' ) ) {
- //unset( self::$custom_hooks_found[ $hook ] );
- }
- }
-
- ksort( self::$custom_hooks_found );
-
- if ( ! empty( self::$custom_hooks_found ) ) {
- echo '
' . $heading . '
';
-
- echo '
Hook | Type | File(s) |
';
-
- foreach ( self::$custom_hooks_found as $hook => $details ) {
- echo '
- ' . self::get_hook_link( $hook, $details ) . ' |
- ' . $details['type'] . ' |
- ' . implode( ', ', array_unique( $details['file'] ) ) . ' |
-
' . "\n";
- }
-
- echo '
';
- }
- }
-
- echo '