has_block() WordPress Function

The has_block() function is used to check if a given block is present in the post content. It returns true if the block is present and false if not.

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

Determines whether a $post or a string contains a specific block type.


Description

This test optimizes for performance rather than strict accuracy, detecting whether the block type exists but not validating its structure and not checking reusable blocks. For strict accuracy, you should use the block parser on post content.

Top ↑

See also


Top ↑

Parameters

$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 value: null


Top ↑

Return

(bool) Whether the post content contains the specified block.


Top ↑

Source

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;
}


Top ↑

Changelog

Changelog
VersionDescription
5.0.0Introduced.

The content displayed on this page has been created in part by processing WordPress source code files which are made available under the GPLv2 (or a later version) license by theĀ Free Software Foundation. In addition to this, the content includes user-written examples and information. All material is subject to review and curation by the WPPaste.com community.