_wp_build_title_and_description_for_single_post_type_block_template()WP 6.1.0

Builds the title and description of a post-specific template based on the underlying referenced post.

Mutates the underlying template object.

This is an internal function for using it by WP core itself. It's not recommended to use this function in your code.

No Hooks.

Return

true|false. Returns true if the referenced post was found and false otherwise.

Usage

_wp_build_title_and_description_for_single_post_type_block_template( $post_type, $slug, $template );
$post_type(string) (required)
Post type, e.g. page, post, product.
$slug(string) (required)
Slug of the post, e.g. a-story-about-shoes.
$template(WP_Block_Template) (required)
Template to mutate adding the description and title computed.

Changelog

Since 6.1.0 Introduced.

_wp_build_title_and_description_for_single_post_type_block_template() code WP 6.1.1

function _wp_build_title_and_description_for_single_post_type_block_template( $post_type, $slug, WP_Block_Template $template ) {
	$post_type_object = get_post_type_object( $post_type );

	$default_args = array(
		'post_type'              => $post_type,
		'post_status'            => 'publish',
		'posts_per_page'         => 1,
		'update_post_meta_cache' => false,
		'update_post_term_cache' => false,
		'ignore_sticky_posts'    => true,
		'no_found_rows'          => true,
	);

	$args  = array(
		'name' => $slug,
	);
	$args  = wp_parse_args( $args, $default_args );
	$posts_query = new WP_Query( $args );

	if ( empty( $posts_query->posts ) ) {
		$template->title = sprintf(
			/* translators: Custom template title in the Site Editor referencing a post that was not found. 1: Post type singular name, 2: Post type slug. */
			__( 'Not found: %1$s (%2$s)' ),
			$post_type_object->labels->singular_name,
			$slug
		);

		return false;
	}

	$post_title = $posts_query->posts[0]->post_title;

	$template->title = sprintf(
		/* translators: Custom template title in the Site Editor. 1: Post type singular name, 2: Post title. */
		__( '%1$s: %2$s' ),
		$post_type_object->labels->singular_name,
		$post_title
	);

	$template->description = sprintf(
		/* translators: Custom template description in the Site Editor. %s: Post title. */
		__( 'Template for %s' ),
		$post_title
	);

	$args = array(
		'title' => $post_title,
	);
	$args                        = wp_parse_args( $args, $default_args );
	$posts_with_same_title_query = new WP_Query( $args );

	if ( count( $posts_with_same_title_query->posts ) > 1 ) {
		$template->title = sprintf(
			/* translators: Custom template title in the Site Editor. 1: Template title, 2: Post type slug. */
			__( '%1$s (%2$s)' ),
			$template->title,
			$slug
		);
	}

	return true;
}