mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-06-28 22:30:04 +00:00
Editor: Simplify usage of block_has_support() function by supporting a string.
Most block feature checks are for a single feature string, and for such cases it is not intuitive to require an array for the `$feature` parameter of the `block_has_support()` function. This changeset brings it in line with other functions like `post_type_supports()`, allowing to pass a string for the `$feature`. An array is still supported for more complex cases where support for sub-features needs to be determined. This change furthermore includes a very minor performance tweak by avoiding calls to the `_wp_array_get()` function if a single feature string is being checked for. Props thekt12, nihar007, mukesh27, swissspidy. Fixes #58532. git-svn-id: https://develop.svn.wordpress.org/trunk@56382 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -1248,16 +1248,25 @@ function unregister_block_style( $block_name, $block_style_name ) {
|
||||
* Checks whether the current block type supports the feature requested.
|
||||
*
|
||||
* @since 5.8.0
|
||||
* @since 6.4.0 The `$feature` parameter now supports a string.
|
||||
*
|
||||
* @param WP_Block_Type $block_type Block type to check for support.
|
||||
* @param array $feature Path to a specific feature to check support for.
|
||||
* @param string|array $feature Feature slug, or path to a specific feature to check support for.
|
||||
* @param mixed $default_value Optional. Fallback value for feature support. Default false.
|
||||
* @return bool Whether the feature is supported.
|
||||
*/
|
||||
function block_has_support( $block_type, $feature, $default_value = false ) {
|
||||
$block_support = $default_value;
|
||||
if ( $block_type && property_exists( $block_type, 'supports' ) ) {
|
||||
$block_support = _wp_array_get( $block_type->supports, $feature, $default_value );
|
||||
if ( is_array( $feature ) && count( $feature ) === 1 ) {
|
||||
$feature = $feature[0];
|
||||
}
|
||||
|
||||
if ( is_array( $feature ) ) {
|
||||
$block_support = _wp_array_get( $block_type->supports, $feature, $default_value );
|
||||
} elseif ( isset( $block_type->supports[ $feature ] ) ) {
|
||||
$block_support = $block_type->supports[ $feature ];
|
||||
}
|
||||
}
|
||||
|
||||
return true === $block_support || is_array( $block_support );
|
||||
|
||||
Reference in New Issue
Block a user