2024-01-29 14:08:16 +01:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Block Bindings API
|
|
|
|
*
|
|
|
|
* Contains functions for managing block bindings in WordPress.
|
|
|
|
*
|
|
|
|
* @package WordPress
|
|
|
|
* @subpackage Block Bindings
|
|
|
|
* @since 6.5.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Registers a new block bindings source.
|
|
|
|
*
|
|
|
|
* Sources are used to override block's original attributes with a value
|
|
|
|
* coming from the source. Once a source is registered, it can be used by a
|
|
|
|
* block by setting its `metadata.bindings` attribute to a value that refers
|
|
|
|
* to the source.
|
|
|
|
*
|
|
|
|
* @since 6.5.0
|
|
|
|
*
|
Editor: Add the Block Bindings API.
This introduces the Block Bindings API for WordPress.
The API allows developers to connects block attributes to different sources. In this PR, two such sources are included: "post meta" and "pattern". Attributes connected to sources can have their HTML replaced by values coming from the source in a way defined by the binding.
Props czapla, lgladdy, gziolo, sc0ttkclark, swissspidy, artemiosans, kevin940726, fabiankaegy, santosguillamot, talldanwp, wildworks.
Fixes #60282.
Built from https://develop.svn.wordpress.org/trunk@57514
git-svn-id: http://core.svn.wordpress.org/trunk@57015 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-02-01 13:54:15 +01:00
|
|
|
* @param string $source_name The name of the source. It must be a string containing a namespace prefix, i.e.
|
|
|
|
* `my-plugin/my-custom-source`. It must only contain lowercase alphanumeric
|
|
|
|
* characters, the forward slash `/` and dashes.
|
2024-01-29 14:08:16 +01:00
|
|
|
* @param array $source_properties {
|
|
|
|
* The array of arguments that are used to register a source.
|
|
|
|
*
|
|
|
|
* @type string $label The label of the source.
|
|
|
|
* @type callback $get_value_callback A callback executed when the source is processed during block rendering.
|
|
|
|
* The callback should have the following signature:
|
|
|
|
*
|
|
|
|
* `function ($source_args, $block_instance,$attribute_name): mixed`
|
|
|
|
* - @param array $source_args Array containing source arguments
|
|
|
|
* used to look up the override value,
|
|
|
|
* i.e. {"key": "foo"}.
|
|
|
|
* - @param WP_Block $block_instance The block instance.
|
|
|
|
* - @param string $attribute_name The name of an attribute .
|
|
|
|
* The callback has a mixed return type; it may return a string to override
|
|
|
|
* the block's original value, null, false to remove an attribute, etc.
|
|
|
|
* }
|
|
|
|
* @return array|false Source when the registration was successful, or `false` on failure.
|
|
|
|
*/
|
|
|
|
function register_block_bindings_source( $source_name, array $source_properties ) {
|
|
|
|
return WP_Block_Bindings_Registry::get_instance()->register( $source_name, $source_properties );
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Unregisters a block bindings source.
|
|
|
|
*
|
|
|
|
* @since 6.5.0
|
|
|
|
*
|
|
|
|
* @param string $source_name Block bindings source name including namespace.
|
2024-01-31 14:01:58 +01:00
|
|
|
* @return array|false The unregistered block bindings source on success and `false` otherwise.
|
2024-01-29 14:08:16 +01:00
|
|
|
*/
|
|
|
|
function unregister_block_bindings_source( $source_name ) {
|
|
|
|
return WP_Block_Bindings_Registry::get_instance()->unregister( $source_name );
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Retrieves the list of all registered block bindings sources.
|
|
|
|
*
|
|
|
|
* @since 6.5.0
|
|
|
|
*
|
|
|
|
* @return array The array of registered block bindings sources.
|
|
|
|
*/
|
|
|
|
function get_all_registered_block_bindings_sources() {
|
|
|
|
return WP_Block_Bindings_Registry::get_instance()->get_all_registered();
|
|
|
|
}
|