Skip to content

Commit 4b9c72f

Browse files
committed
Customize: Introduce a fix for themes that pass a stringable object through the template_include filter despite it being documented as only accepting a string.
This has historically worked until [61892] increased the strictness of the template file validation which dismissed any value of a type other than a string, which a stringable object is not. Props dmsnell, westonruter. git-svn-id: https://develop.svn.wordpress.org/trunk@61913 602fd350-edb4-49c9-b593-d223f7449a82
1 parent df331ae commit 4b9c72f

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

src/wp-includes/class-wp-block-patterns-registry.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,9 @@ private function get_content( $pattern_name, $outside_init_only = false ) {
174174
$patterns = &$this->registered_patterns;
175175
}
176176

177-
$pattern_path = realpath( $patterns[ $pattern_name ]['filePath'] ?? '' );
177+
$file_path = $patterns[ $pattern_name ]['filePath'] ?? '';
178+
$is_stringy = is_string( $file_path ) || ( is_object( $file_path ) && method_exists( $file_path, '__toString' ) );
179+
$pattern_path = $is_stringy ? realpath( (string) $file_path ) : null;
178180
if (
179181
! isset( $patterns[ $pattern_name ]['content'] ) &&
180182
is_string( $pattern_path ) &&

src/wp-includes/template-loader.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,9 @@
111111
*
112112
* @param string $template The path of the template to include.
113113
*/
114-
$template = apply_filters( 'template_include', $template );
115-
$template = is_string( $template ) ? realpath( $template ) : null;
114+
$template = apply_filters( 'template_include', $template );
115+
$is_stringy = is_string( $template ) || ( is_object( $template ) && method_exists( $template, '__toString' ) );
116+
$template = $is_stringy ? realpath( (string) $template ) : null;
116117
if (
117118
is_string( $template ) &&
118119
( str_ends_with( $template, '.php' ) || str_ends_with( $template, '.html' ) ) &&

0 commit comments

Comments
 (0)