woocommerce/plugins/woocommerce-blocks/docs/extensibility
Christos Lilitsas c35bf8ee67 Store API: Refactored validation handling and introduced `woocommerce_store_api_cart_errors` hook (https://github.com/woocommerce/woocommerce-blocks/pull/5904)
* Introduce 'wooocommerce_store_api_validate_cart' action

This action can be used by third party developers to add extra 'errors' in cart route responses. This is meant to function as a replacement of the legacy 'woocommerce_check_cart_items' hook.

* Introduce a new 'wooocommerce_blocks_draft_order_updated' action

The new action can be used to modify the finalized draft order object.
Additionally, developers can use it to throw a RouteException in order to prevent access to the checkout block.

The PR also shuffles some existing code that checks the order instance and sets the draft order ID before the 'woocommerce_blocks_checkout_update_order_meta' gets fired.

* Fix PHPCS

* Revert changes to Checkout route

* Add some extra content to the 'woocommerce_blocks_checkout_update_order_meta' docblock on the effect of exceptions thrown from callbacks

* Add __experimental prefix to 'wooocommerce_store_api_validate_cart' action

* Remove long ooo

* Add example

* Refactor cart error getters as wrappers to the validate functions

* Refactor stock_exceptions_to_wp_errors to return a single wp error.

* Add type hint in custom exception

* Fix namespace versioning and some minor improvements

* Move InvalidCartException catcher from AbstractCartRoute to AbstractRoute

* Introduce the __experimental_woocommerce_store_api_cart_errors filter

* Handle all notices and group them into a single WP_Error instance

* Cleanup doc and update example

* Cleanup NoticeHandler

* Fix doc

* Fix WP_Error namespace

* Update NoticeHandler unit tests

* Fix Unit tests typo

* Add docs to tests to bypass precommit scripts

* Refactor wp error grouping with merge_from

* Remove previous cart getters and refactor the get_cart_errors

* Fix CartSchema error getter and minor fixes

* Revert NoticeHandler exception namespace

* Unit test fix for get_cart_errors

* Switch back to do_action

* Update the example doc

* Duplicate use statement

* Update docblock in validate_cart() method for validation hooks

* Update action docs

* Remove __experimental prefix

Co-authored-by: Manos Psychogyiopoulos <psyx@somewherewarm.com>
Co-authored-by: Mike Jolley <mike.jolley@me.com>
2022-03-02 12:21:31 +00:00
..
README.md Refactor ExtendRestApi as ExtendSchema and expose `register_endpoint_data` as a public function (https://github.com/woocommerce/woocommerce-blocks/pull/5941) 2022-03-01 10:34:05 +00:00
actions.md Store API: Refactored validation handling and introduced `woocommerce_store_api_cart_errors` hook (https://github.com/woocommerce/woocommerce-blocks/pull/5904) 2022-03-02 12:21:31 +00:00
available-endpoints-to-extend.md Refactor ExtendRestApi as ExtendSchema and expose `register_endpoint_data` as a public function (https://github.com/woocommerce/woocommerce-blocks/pull/5941) 2022-03-01 10:34:05 +00:00
available-filters.md Update some Cart and Checkout extensibility docs to include the Mini Cart block (https://github.com/woocommerce/woocommerce-blocks/pull/5815) 2022-02-21 16:29:29 +01:00
available-slot-fills.md Refactor ExtendRestApi as ExtendSchema and expose `register_endpoint_data` as a public function (https://github.com/woocommerce/woocommerce-blocks/pull/5941) 2022-03-01 10:34:05 +00:00
checkout-flow-and-events.md Include issue submission link in the footer of all documention (.md files) (https://github.com/woocommerce/woocommerce-blocks/pull/5655) 2022-02-02 14:27:46 +00:00
dom-events.md Include issue submission link in the footer of all documention (.md files) (https://github.com/woocommerce/woocommerce-blocks/pull/5655) 2022-02-02 14:27:46 +00:00
extend-rest-api-add-data.md Refactor ExtendRestApi as ExtendSchema and expose `register_endpoint_data` as a public function (https://github.com/woocommerce/woocommerce-blocks/pull/5941) 2022-03-01 10:34:05 +00:00
extend-rest-api-formatters.md Refactor ExtendRestApi as ExtendSchema and expose `register_endpoint_data` as a public function (https://github.com/woocommerce/woocommerce-blocks/pull/5941) 2022-03-01 10:34:05 +00:00
extend-rest-api-new-endpoint.md Refactor ExtendRestApi as ExtendSchema and expose `register_endpoint_data` as a public function (https://github.com/woocommerce/woocommerce-blocks/pull/5941) 2022-03-01 10:34:05 +00:00
extend-rest-api-update-cart.md Refactor ExtendRestApi as ExtendSchema and expose `register_endpoint_data` as a public function (https://github.com/woocommerce/woocommerce-blocks/pull/5941) 2022-03-01 10:34:05 +00:00
filtering-payment-methods.md Refactor ExtendRestApi as ExtendSchema and expose `register_endpoint_data` as a public function (https://github.com/woocommerce/woocommerce-blocks/pull/5941) 2022-03-01 10:34:05 +00:00
filters.md Refactor ExtendRestApi as ExtendSchema and expose `register_endpoint_data` as a public function (https://github.com/woocommerce/woocommerce-blocks/pull/5941) 2022-03-01 10:34:05 +00:00
integration-interface.md Update some Cart and Checkout extensibility docs to include the Mini Cart block (https://github.com/woocommerce/woocommerce-blocks/pull/5815) 2022-02-21 16:29:29 +01:00
payment-method-integration.md Include issue submission link in the footer of all documention (.md files) (https://github.com/woocommerce/woocommerce-blocks/pull/5655) 2022-02-02 14:27:46 +00:00
slot-fills.md Refactor ExtendRestApi as ExtendSchema and expose `register_endpoint_data` as a public function (https://github.com/woocommerce/woocommerce-blocks/pull/5941) 2022-03-01 10:34:05 +00:00

README.md

Extensibility in WooCommerce Blocks

These documents are all dealing with extensibility in the various WooCommerce Blocks.

Table of Contents

Hooks (actions and filters)

Document Description
Actions Documentation covering action hooks on the server side.
Filters Documentation covering filter hooks on the server side.

REST API

Document Description
Exposing your data in the Store API. Explains how you can add additional data to Store API endpoints.
Available endpoints to extend with ExtendSchema A list of all available endpoints to extend.
Adding an endpoint to ExtendSchema. A step by step process for contributors to expose a new endpoint via ExtendSchema.
Available Formatters Available Formatters to format data for use in the Store API.

Checkout Payment Methods

Document Description
Checkout Flow and Events All about the checkout flow in the checkout block and the various emitted events that can be subscribed to.
Payment Method Integration Information about implementing payment methods.
Filtering Payment Methods Information about filtering the payment methods available in the Checkout Block.

Checkout Block

In addition to the reference material below, please see the block-checkout package documentation which is used to extend checkout with Filters, Slot Fills, and Inner Blocks.

Document Description
IntegrationInterface The IntegrationInterface class and how to use it to register scripts, styles, and data with WooCommerce Blocks.
Available Filters All about the filters that you may use to change values of certain elements of WooCommerce Blocks.
Slots and Fills. Explains Slot Fills and how to use them to render your own components in Cart and Checkout.
Available Slot Fills. Available Slots that you can use and their positions in Cart and Checkout.
DOM Events A list of DOM Events used by some blocks to communicate between them and with other parts of WooCommerce.

We're hiring! Come work with us!

🐞 Found a mistake, or have a suggestion? Leave feedback about this document here.