Create initial version of Product Editor Development Handbook (#40309)
* Add markdown for testing * Revert "Add markdown for testing" This reverts commit 63a9fc9f441b97db15bb9ee40c46c38033f2e235. * Add new folder with block product editor docs * Iterate over the documentation * Iterate over documentation * Add screenshot * Iterate over doc * Iterate over documentation * Iterate over documentation * Add sample comment * Rename folder * Add FAQ and comments * More changes * Remove unused README * Iterate over documentation * Implement lint changes * Implement lint changes * Add changelog * Remove placeholder readmes * Remove stale references * Remove _media folder and add images to developer.woocommerce.com * Remove placeholder docs * Improve wording for 'non-standard applications' * Convert example to new template API hook * Fix snippet * Iterate over code review suggestions * Replace product editor structure image * Update image reference * Increment example in common-tasks * Update add a field next to an existing one sample
This commit is contained in:
parent
fd6ac01fcd
commit
2ed9eadaeb
|
@ -0,0 +1,18 @@
|
|||
# Developing extensions for the product editor
|
||||
|
||||
> ⚠️ **Notice:** This documentation is currently a **work in progress**. Please be aware that some sections might be incomplete or subject to change. We appreciate your patience and welcome any contributions!
|
||||
|
||||
This handbook is a guide for extension developers looking to add support for the new product editor in their extensions. The product editor uses [Gutenberg's Block Editor](https://github.com/WordPress/gutenberg/tree/trunk/packages/block-editor), which is going to help WooCommerce evolve alongside the WordPress ecosystem.
|
||||
|
||||
The product editor's UI consists of Groups (currently rendered as tabs), Sections, and Fields, which are all blocks.
|
||||
|
||||
![Product editor structure](https://woocommerce.files.wordpress.com/2023/09/groups-sections-fields.jpg)
|
||||
|
||||
The form's structure is defined in PHP using a Template. The template can be modified by using the Block Template API to add new Groups, Sections, and Fields as well as remove existing ones.
|
||||
|
||||
Many extensibility implementations can be done using only the PHP-based Block Template API. More complex interactivity can be implemented using JavaScript and React (the same library used to implement the core blocks used in the product editor). [@woocommerce/create-product-editor-block](../../packages/js/create-product-editor-block/README.md) can help scaffold a development environment with JavaScript and React.
|
||||
|
||||
|
||||
## Index
|
||||
|
||||
- [Common tasks](common-tasks.md)
|
|
@ -0,0 +1,34 @@
|
|||
# Common tasks
|
||||
|
||||
> ⚠️ **Notice:** This documentation is currently a **work in progress**. Please be aware that some sections might be incomplete or subject to change. We appreciate your patience and welcome any contributions!
|
||||
|
||||
## Adding a group/section/field next to an existing one
|
||||
|
||||
Here's a snippet that adds a new block to the catalog section, between the first and second fields (order 15):
|
||||
|
||||
```php
|
||||
use Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface;
|
||||
|
||||
if ( ! function_exists( 'YOUR_PREFIX_add_block_after_categories' ) ) {
|
||||
/**
|
||||
* Add a new block to the template.
|
||||
*/
|
||||
function YOUR_PREFIX_add_block_after_categories( BlockInterface $product_categories_field ) {
|
||||
$product_categories_field->get_parent()->add_block(
|
||||
[
|
||||
'id' => 'your-prefix-id',
|
||||
'blockName' => 'woocommerce/product-checkbox-field',
|
||||
'order' => $product_categories_field->get_order() + 5,
|
||||
'attributes' => [
|
||||
'label' => 'Your Checkbox',
|
||||
'property' => 'your_checkbox_bool_property',
|
||||
],
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
add_action( 'woocommerce_block_template_area_product-form_after_add_block_product-categories', 'YOUR_PREFIX_add_block_after_categories' );
|
||||
```
|
||||
|
||||
Result:
|
||||
![Adding field next to other field](https://woocommerce.files.wordpress.com/2023/09/adding-field-next-to-other-field.png)
|
Loading…
Reference in New Issue