From 3cd0e25c034850da8bf6a55ea777115024420a08 Mon Sep 17 00:00:00 2001 From: noisysocks Date: Tue, 14 Dec 2021 02:46:00 +0000 Subject: [PATCH] Filter custom block templates with PHP This method calls get_block_templates once and uses block template properties directly for filtering. This way, we can avoid hitting the database for each public post type. The previous method is useful when we already know the current post type we request templates for, like when using REST API. Follows [52334]. See #54335. Props mamaduka, youknowriad. Built from https://develop.svn.wordpress.org/trunk@52365 git-svn-id: http://core.svn.wordpress.org/trunk@51957 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/class-wp-theme.php | 10 +++++++++- wp-includes/version.php | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/wp-includes/class-wp-theme.php b/wp-includes/class-wp-theme.php index 2f9e60b35c..4a36addfbf 100644 --- a/wp-includes/class-wp-theme.php +++ b/wp-includes/class-wp-theme.php @@ -1250,9 +1250,17 @@ final class WP_Theme implements ArrayAccess { } if ( current_theme_supports( 'block-templates' ) ) { + $block_templates = get_block_templates( array(), 'wp_template' ); foreach ( get_post_types( array( 'public' => true ) ) as $type ) { - $block_templates = get_block_templates( array( 'post_type' => $type ), 'wp_template' ); foreach ( $block_templates as $block_template ) { + if ( ! $block_template->is_custom ) { + continue; + } + + if ( isset( $block_template->post_types ) && ! in_array( $type, $block_template->post_types, true ) ) { + continue; + } + $post_templates[ $type ][ $block_template->slug ] = $block_template->title; } } diff --git a/wp-includes/version.php b/wp-includes/version.php index 5e99d0e463..ad4a73f1ca 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '5.9-beta2-52364'; +$wp_version = '5.9-beta2-52365'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.