render_block_core_query_title()WP 5.8.0

Renders the core/query-title block on the server. For now it supports Archive title, Search title, and Post Type Label, using queried object information

No Hooks.

Returns

String. Returns the query title based on the queried object.

Usage

render_block_core_query_title( $attributes, $content, $block );
$attributes(array) (required)
Block attributes.
$content(required)
.
$block(object) (required)
Block instance.

Changelog

Since 5.8.0 Introduced.

render_block_core_query_title() code WP 6.9.1

function render_block_core_query_title( $attributes, $content, $block ) {
	$type       = isset( $attributes['type'] ) ? $attributes['type'] : null;
	$is_archive = is_archive();
	$is_search  = is_search();
	$post_type  = isset( $block->context['query']['postType'] ) ? $block->context['query']['postType'] : get_post_type();

	if ( ! $type ||
		( 'archive' === $type && ! $is_archive ) ||
		( 'search' === $type && ! $is_search ) ||
		( 'post-type' === $type && ! $post_type )
	) {
		return '';
	}
	$title = '';
	if ( $is_archive ) {
		$show_prefix = isset( $attributes['showPrefix'] ) ? $attributes['showPrefix'] : true;
		if ( ! $show_prefix ) {
			add_filter( 'get_the_archive_title_prefix', '__return_empty_string', 1 );
			$title = get_the_archive_title();
			remove_filter( 'get_the_archive_title_prefix', '__return_empty_string', 1 );
		} else {
			$title = get_the_archive_title();
		}
	}
	if ( $is_search ) {
		$title = __( 'Search results' );

		if ( isset( $attributes['showSearchTerm'] ) && $attributes['showSearchTerm'] ) {
			$title = sprintf(
				/* translators: %s is the search term. */
				__( 'Search results for: "%s"' ),
				get_search_query()
			);
		}
	}
	if ( 'post-type' === $type ) {
		$post_type_object = get_post_type_object( $post_type );

		if ( ! $post_type_object ) {
			return '';
		}

		$post_type_name = $post_type_object->labels->singular_name;
		$show_prefix    = isset( $attributes['showPrefix'] ) ? $attributes['showPrefix'] : true;

		if ( $show_prefix ) {
			$title = sprintf(
				/* translators: %s is the post type name. */
				__( 'Post Type: "%s"' ),
				$post_type_name
			);
		} else {
			$title = $post_type_name;
		}
	}

	$level    = isset( $attributes['level'] ) ? (int) $attributes['level'] : 1;
	$tag_name = 0 === $level ? 'p' : 'h' . (int) $attributes['level'];

	$align_class_name   = empty( $attributes['textAlign'] ) ? '' : "has-text-align-{$attributes['textAlign']}";
	$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $align_class_name ) );
	return sprintf(
		'<%1$s %2$s>%3$s</%1$s>',
		$tag_name,
		$wrapper_attributes,
		$title
	);
}