确定$ post或字符串是否包含特定块类型。

原型

has_block( string $block_type, int|string|WP_Post|null $post = null )

描述

此测试优化性能而不是严格的准确性,检测块类型存在但不验证其结构。为了严格准确,你应该在帖子内容上使用块解析器。

参考:

  • parse_blocks()

参数

$block_type (string) (Required) 要查找的完整块类型。

$post (int|string|WP_Post|null) (Optional)  发布内容,帖子ID或帖子对象。默认为全球$ post。

返回值

(bool)  帖子内容是否包含指定的块。

源文件

路径:wp-includes/blocks.php

<?php
...
function has_block( $block_type, $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;
		}
	}
	return false !== strpos( $post, '<!-- wp:' . $block_type . ' ' );
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/has_block/