woocommerce/plugins/woocommerce-blocks
Patricia Hillebrandt 3c0463ada1 Filter data count mismatch > Create the get_attribute_and_meta_counts method (https://github.com/woocommerce/woocommerce-blocks/pull/8599)
* Introduce the new get_attribute_and_meta_counts method.

* Ensure that if no term_slug or term_id is found for counting, the default list with all terms (with count equal zero) is returned instead.

* update conditional for the slug, the empty state for requests without filter attributes and the condition query for 'and'

* Introduce the get_terms_list method.

* Remove the legacy get_attribute_counts method and update its calls to rely on the new get_attribute_and_meta_counts method instead.

* Update the query to ensure that if a parent product has multiple identical attributes, they are counted once.

* Update to start relying on the get_product_by_metas method for counting product metas

* Add a new where_clause to only include product metas and attributes in the macro query if they are not empty.

* Add wpdb->prepare to the macro query and the get_terms_list method.

* Replace the raw atomic query for fetching the filtered terms with the new get_product_by_filtered_terms method.

* Update the request params for the get_attribute_and_meta_counts method.

* Update the request params for the product metas (min and max price).

* Update the query and returned value on get_terms_list.

* Update the validation for returning the default counts when no values are filtered.

* Update the query on get_terms_list to use ->prefix

* Update the  variable for the query to rely on the filtered one. Update the min_price and max_price format on get_product_by_metas.

* Ensure the get_product_by_filtered_terms method is triggered for each one of the filtered terms and update the macro query to include those term ids on the WHERE clause.

* Make adjustments for the 'and' condition to work as expected.

* Ensure the queryState.attributes is properly added as a param to the API request to correctly fetch the attribute count data.

* Ensure the get_product_by_metas method is only triggered when at least one of the metas in the request is not empty.

* Join type update: for the 'and' (all) filter condition, items with the count zero are not displayed.

* wpdb prepare the where clauses

* Update the get_product_by_filtered_terms query wpdb prepare params

* update the get_product_by_metas method's where clause preparation.

* Update the where clause preparation for get_attribute_and_meta_counts so we don't rely on interpolated variables anymore.

* Adjust the get_attribute_and_meta_counts method for usage alongside the rating filter.

* Adjust the query for fetching the attribute counts for filtered ratings.

* Add support for the filter by stock.

* Ensure the product attribute counts are correct if the parent product receives a rating.

* Ensure product_or_parent_id is used only when the filter by rating is used, not affecting price or stock filters.

* Add the missing else condition.

* Enable caching.

* Address CR

* Update query for average rating.

* remove file accidentally commited.

* When multiple ratings are selected, make sure the where clause is updated accordingly for each one of them.

* Start updating the stock_status logic to account for when multiple options are selected by the user.

* Ensure the counts are properly updated when more than one stock status is selected.

* Ditch the is_array condition for the average_rating counts as  is always an array.

* Deprecate the second param attributes for the get_attribute_counts method.

* Add the filtered_attribute to the transient_key

* Bypass cache if WP_DEBUG is enabled.

* Update formatting for macro query.

* Fix mixed tabs spaces on query

* Update spacing/formatting for SQL queries.

* Minor: update indentation for the main SQL query

---------

Co-authored-by: roykho <roykho77@gmail.com>
2023-04-11 12:32:24 -03:00
..
.github Comment out the integration with Airtable (https://github.com/woocommerce/woocommerce-blocks/pull/8933) 2023-04-06 16:29:14 +02:00
.sources
.vscode Fix ESLint errors (https://github.com/woocommerce/woocommerce-blocks/pull/7556) 2022-11-02 17:46:14 +01:00
.wordpress-org Add WordPress.org assets folder and add latest assets. (https://github.com/woocommerce/woocommerce-blocks/pull/3377) 2020-11-09 08:07:15 -05:00
assets Filter data count mismatch > Create the get_attribute_and_meta_counts method (https://github.com/woocommerce/woocommerce-blocks/pull/8599) 2023-04-11 12:32:24 -03:00
bin Add single product block (https://github.com/woocommerce/woocommerce-blocks/pull/8610) 2023-04-06 15:40:43 -03:00
docs Port changes from release branch to trunk 2023-04-11 15:33:30 +01:00
images Add Product Reviews block (https://github.com/woocommerce/woocommerce-blocks/pull/8857) 2023-03-28 19:14:13 +02:00
packages Add `validateOnMount` prop to `ValidatedTextInput` (https://github.com/woocommerce/woocommerce-blocks/pull/8889) 2023-04-11 01:50:59 -07:00
patches Revert "Remove Combobox patch (https://github.com/woocommerce/woocommerce-blocks/pull/6465)" (https://github.com/woocommerce/woocommerce-blocks/pull/6531) 2022-06-07 14:09:50 +02:00
patterns Add customer-account icon class to patterns (https://github.com/woocommerce/woocommerce-blocks/pull/8821) 2023-03-27 13:33:48 -07:00
src Filter data count mismatch > Create the get_attribute_and_meta_counts method (https://github.com/woocommerce/woocommerce-blocks/pull/8599) 2023-04-11 12:32:24 -03:00
storybook Add workflow to check valid links in all documentations (https://github.com/woocommerce/woocommerce-blocks/pull/8496) 2023-02-23 06:08:40 -08:00
templates Feature Branch: Updated Shopper Notices (https://github.com/woocommerce/woocommerce-blocks/pull/8659) 2023-04-05 13:43:03 +01:00
tests Prevent error when entering postcode for countries without specific validation rules (https://github.com/woocommerce/woocommerce-blocks/pull/8987) 2023-04-10 03:13:23 -07:00
.distignore Add CI for monitoring TypeScript errors (https://github.com/woocommerce/woocommerce-blocks/pull/6106) 2022-11-02 11:41:10 +01:00
.editorconfig Update MD editor config (https://github.com/woocommerce/woocommerce-blocks/pull/7968) 2022-12-19 12:06:48 +00:00
.env Update relevant files due to L2->L0 policy change for minimum required versions. (https://github.com/woocommerce/woocommerce-blocks/pull/4484) 2021-07-29 10:52:34 -04:00
.eslintignore Disable ESLint for the interactivity package (https://github.com/woocommerce/woocommerce-blocks/pull/8301) 2023-01-26 14:13:53 +01:00
.eslintrc.js Feature Branch: Updated Shopper Notices (https://github.com/woocommerce/woocommerce-blocks/pull/8659) 2023-04-05 13:43:03 +01:00
.gitattributes Revert "Remove .gitattributes file (https://github.com/woocommerce/woocommerce-blocks/pull/5242)" (https://github.com/woocommerce/woocommerce-blocks/pull/6049) 2022-03-14 12:42:34 +00:00
.gitignore Add Storybook documentation and remove deprecated knobs (https://github.com/woocommerce/woocommerce-blocks/pull/5407) 2021-12-21 18:08:57 +01:00
.markdownlint.json Upgrade wp-prettier to 2.6.2 and reformat the codebase (https://github.com/woocommerce/woocommerce-blocks/pull/6566) 2022-06-15 11:56:52 +02:00
.markdownlintignore Improve the structure of the WooCommerce Blocks Handbook (https://github.com/woocommerce/woocommerce-blocks/pull/6429) 2022-06-09 17:52:19 +02:00
.nvmrc Bump Node version to 16.15.0 (https://github.com/woocommerce/woocommerce-blocks/pull/8885) 2023-03-28 13:49:20 -03:00
.prettierignore Create 2e2 tests for Cross-Sells block (https://github.com/woocommerce/woocommerce-blocks/pull/6983) 2022-09-21 13:29:16 +07:00
.prettierrc.js Update @wordpress/scripts and eslint and stylint configurations (https://github.com/woocommerce/woocommerce-blocks/pull/3749) 2021-01-27 11:49:33 -05:00
.stylelintrc.json Upgrade @wordpress/scripts and /env packages (https://github.com/woocommerce/woocommerce-blocks/pull/6114) 2022-03-28 15:00:20 +02:00
.wp-env.json Add PHP8 Unit Testing (https://github.com/woocommerce/woocommerce-blocks/pull/7528) 2022-11-09 15:28:08 +00:00
LICENSE Create LICENSE (https://github.com/woocommerce/woocommerce-blocks/pull/4235) 2021-05-20 15:07:12 +01:00
README.md Fix "Writing Your First Block Type" tutorial link in docs (https://github.com/woocommerce/woocommerce-blocks/pull/8231) 2023-01-18 21:04:20 +04:00
babel.config.js Migrate Storybook to 6.4.0 and enable auto-detection of controls (https://github.com/woocommerce/woocommerce-blocks/pull/5249) (https://github.com/woocommerce/woocommerce-blocks/pull/5264) 2021-12-01 12:28:27 +01:00
checkstyle.xml Remove old cart notices before showing new ones (https://github.com/woocommerce/woocommerce-blocks/pull/7363) 2023-01-12 04:44:26 -08:00
composer.json Port changes from release branch to trunk 2023-04-11 15:33:30 +01:00
composer.lock Bump automattic/jetpack-autoloader from 2.11.14 to 2.11.16 (https://github.com/woocommerce/woocommerce-blocks/pull/8534) 2023-03-02 13:46:51 +05:30
docker-compose.yml Fix broken phpunit tests (https://github.com/woocommerce/woocommerce-blocks/pull/4305) 2021-06-03 09:35:52 +02:00
global.d.ts Add camelcase rule to eslint config (https://github.com/woocommerce/woocommerce-blocks/pull/4382) 2021-07-09 17:53:45 +01:00
package-lock.json Port changes from release branch to trunk 2023-04-11 15:33:30 +01:00
package.json Port changes from release branch to trunk 2023-04-11 15:33:30 +01:00
phpcs.xml Serialize the Interactivity API's store from PHP and hydrate it on the client (https://github.com/woocommerce/woocommerce-blocks/pull/8447) 2023-02-28 17:33:33 +01:00
phpunit.xml.dist Deprecate the woocommerce_shared_settings hook (https://github.com/woocommerce/woocommerce-blocks/pull/4092) 2021-04-26 10:36:50 +01:00
postcss.config.js
readme.txt Port changes from release branch to trunk 2023-04-11 15:33:30 +01:00
tsconfig.base.json Add the Interactivity API runtime to WooCommerce blocks (https://github.com/woocommerce/woocommerce-blocks/pull/8220) 2023-01-26 12:39:25 +01:00
tsconfig.json Add Product Image Gallery (https://github.com/woocommerce/woocommerce-blocks/pull/8235) 2023-02-14 14:21:48 +01:00
webpack.config.js Add the Interactivity API runtime to WooCommerce blocks (https://github.com/woocommerce/woocommerce-blocks/pull/8220) 2023-01-26 12:39:25 +01:00
woocommerce-gutenberg-products-block.php Port changes from release branch to trunk 2023-04-11 15:33:30 +01:00

README.md

WooCommerce Blocks

Latest Tag View JavaScript and CSS Linting PHP Coding Standards Automated tests

This is the feature plugin for WooCommerce + Gutenberg. This plugin serves as a space to iterate and explore new Blocks and updates to existing blocks for WooCommerce, and how WooCommerce might work with the block editor.

Use this plugin if you want access to the bleeding edge of available blocks for WooCommerce. However, stable blocks are bundled into WooCommerce, and can be added from the "WooCommerce" section in the block inserter.

Table of Contents

Documentation

To find out more about the blocks and how to use them, check out the documentation on WooCommerce.com.

If you want to see what we're working on for future versions, or want to help out, read on.

Code Documentation

  • Blocks - Documentation for specific Blocks.
  • Editor Components - Shared components used in WooCommerce blocks for the editor (Gutenberg) UI.
  • WooCommerce Blocks Handbook - Documentation for designers and developers on how to extend or contribute to blocks, and how internal developers should handle new releases.
  • WooCommerce Blocks Storybook - Contains a list and demo of components used in the plugin.

Installing the plugin version

We release a new version of WooCommerce Blocks onto WordPress.org every few weeks, which can be used as an easier way to preview the features.

Note: The plugin follows a policy of supporting the "L0" strategy for version support. What this means is that the plugin will require the most recent version of WordPress, and the most recent version of WooCommerce core at the time of a release. You can read more about this policy here.

  1. Make sure you have the latest available versions of WordPress and WooCommerce on your site.
  2. The plugin version is available on WordPress.org. Download the plugin version here.
  3. Activate the plugin.

Installing the development version

  1. Make sure you have the latest versions of WordPress and WooCommerce on your site.
  2. Get a copy of this plugin using the green "Clone or download" button on the right.
  3. Make sure you're using Node.js v16.
  4. npm install to install the dependencies.
  5. composer install to install core dependencies.
  6. To compile the code, run any of the following commands
    1. npm run build (production build).
    2. npm run dev (development build).
    3. npm start (development build + watching for changes).
  7. Activate the plugin.

The source code is in the assets/ folder and the compiled code is built into build/.

Getting started with block development

Run through the "Writing Your First Block Type" tutorial for a quick course in block-building.

For deeper dive, try looking at the core blocks code, or see what components are available.

To begin contributing to the WooCommerce Blocks plugin, see our getting started guide and developer handbook.

Other useful docs to explore:

Long-term vision

WooCommerce Blocks are the easiest, most flexible way to build your store user interface and showcase your products.