函数原型
has_block( string $block_name, int|string|WP_Post|null $post = null ): bool
函数描述
Determines whether a $post or a string contains a specific block type.
是否弃用
未弃用
函数参数
-
$block_name
string
Required - Full block type to look for.
-
$post
int|string|WP_Post|null
Optional - Post content, post ID, or post object.
Defaults to global $post.Default:
null
函数返回值
bool Whether the post content contains the specified block.
函数位置
File: wp-includes/blocks.php.
函数源码
function has_block( $block_name, $post = null ) {
if ( ! has_blocks( $post ) ) {
return false;
}
if ( ! is_string( $post ) ) {
$wp_post = get_post( $post );
if ( $wp_post instanceof WP_Post ) {
$post = $wp_post->post_content;
}
}
/*
* Normalize block name to include namespace, if provided as non-namespaced.
* This matches behavior for WordPress 5.0.0 - 5.3.0 in matching blocks by
* their serialized names.
*/
if ( false === strpos( $block_name, '/' ) ) {
$block_name = 'core/' . $block_name;
}
// Test for existence of block by its fully qualified name.
$has_block = false !== strpos( $post, '<!-- wp:' . $block_name . ' ' );
if ( ! $has_block ) {
/*
* If the given block name would serialize to a different name, test for
* existence by the serialized form.
*/
$serialized_block_name = strip_core_block_namespace( $block_name );
if ( $serialized_block_name !== $block_name ) {
$has_block = false !== strpos( $post, '<!-- wp:' . $serialized_block_name . ' ' );
}
}
return $has_block;
}
源码链接
变更日志
| Version | Description |
|---|---|
| 5.0.0 | Introduced. |

