get_allowed_block_types()
云策文档标注
概述
get_allowed_block_types() 函数用于获取在块编辑器中允许使用的块类型列表。它接受一个 WP_Block_Editor_Context 参数,并返回一个布尔值或字符串数组来控制块类型的启用状态。
关键要点
- 函数返回类型为 bool|string[],布尔值 true 表示启用所有已注册块类型,false 表示禁用所有,数组则指定允许的块类型 slug。
- 参数 $block_editor_context 是必需的,提供当前块编辑器的上下文信息。
- 使用 'allowed_block_types_all' 过滤器(自 5.8.0 起)来全局过滤允许的块类型。
- 对于旧版本兼容,如果上下文包含 post 数据,会应用已弃用的 'allowed_block_types' 过滤器(自 5.0.0 引入,5.8.0 弃用)。
- 该函数被 get_block_editor_settings() 调用,用于配置块编辑器设置。
代码示例
function get_allowed_block_types( $block_editor_context ) {
$allowed_block_types = true;
$allowed_block_types = apply_filters( 'allowed_block_types_all', $allowed_block_types, $block_editor_context );
if ( ! empty( $block_editor_context->post ) ) {
$post = $block_editor_context->post;
$allowed_block_types = apply_filters_deprecated( 'allowed_block_types', array( $allowed_block_types, $post ), '5.8.0', 'allowed_block_types_all' );
}
return $allowed_block_types;
}注意事项
- 自 WordPress 5.8.0 版本引入此函数,取代了旧有的过滤机制。
- 开发者在自定义块类型限制时,应优先使用 'allowed_block_types_all' 过滤器以确保兼容性。
- 注意处理返回值的类型,以正确配置块编辑器的可用块。
原文内容
Gets the list of allowed block types to use in the block editor.
Parameters
$block_editor_contextWP_Block_Editor_Contextrequired-
The current block editor context.
Source
function get_allowed_block_types( $block_editor_context ) {
$allowed_block_types = true;
/**
* Filters the allowed block types for all editor types.
*
* @since 5.8.0
*
* @param bool|string[] $allowed_block_types Array of block type slugs, or boolean to enable/disable all.
* Default true (all registered block types supported).
* @param WP_Block_Editor_Context $block_editor_context The current block editor context.
*/
$allowed_block_types = apply_filters( 'allowed_block_types_all', $allowed_block_types, $block_editor_context );
if ( ! empty( $block_editor_context->post ) ) {
$post = $block_editor_context->post;
/**
* Filters the allowed block types for the editor.
*
* @since 5.0.0
* @deprecated 5.8.0 Use the 'allowed_block_types_all' filter instead.
*
* @param bool|string[] $allowed_block_types Array of block type slugs, or boolean to enable/disable all.
* Default true (all registered block types supported)
* @param WP_Post $post The post resource data.
*/
$allowed_block_types = apply_filters_deprecated( 'allowed_block_types', array( $allowed_block_types, $post ), '5.8.0', 'allowed_block_types_all' );
}
return $allowed_block_types;
}
Hooks
- apply_filters_deprecated( ‘allowed_block_types’, bool|string[] $allowed_block_types, WP_Post $post )
-
Filters the allowed block types for the editor.
- apply_filters( ‘allowed_block_types_all’, bool|string[] $allowed_block_types, WP_Block_Editor_Context $block_editor_context )
-
Filters the allowed block types for all editor types.
Changelog
| Version | Description |
|---|---|
| 5.8.0 | Introduced. |