c1787029 by Jeremy Groot

wp core update

1 parent f0410789
......@@ -45,7 +45,7 @@ require_once ABSPATH . 'wp-admin/admin-header.php';
<div class="about__section changelog has-subtle-background-color">
<div class="column">
<h2><?php _e( 'Maintenance Release' ); ?></h2>
<h2><?php _e( 'Maintenance and Security Releases' ); ?></h2>
<p>
<?php
printf(
......@@ -53,7 +53,7 @@ require_once ABSPATH . 'wp-admin/admin-header.php';
_n(
'<strong>Version %1$s</strong> addressed %2$s bug.',
'<strong>Version %1$s</strong> addressed %2$s bugs.',
10
4
),
'6.4.1',
'4'
......@@ -71,6 +71,31 @@ require_once ABSPATH . 'wp-admin/admin-header.php';
);
?>
</p>
<p>
<?php
printf(
/* translators: 1: WordPress version number, 2: Plural number of bugs. */
_n(
'<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bug.',
'<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bugs.',
7
),
'6.4.2',
'7'
);
?>
<?php
printf(
/* translators: %s: HelpHub URL. */
__( 'For more information, see <a href="%s">the release notes</a>.' ),
sprintf(
/* translators: %s: WordPress version. */
esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ),
sanitize_title( '6.4.2' )
)
);
?>
</p>
</div>
</div>
......@@ -272,7 +297,7 @@ require_once ABSPATH . 'wp-admin/admin-header.php';
<p style="margin-top:calc(var(--gap) / 2);">
<?php
printf(
/* translators: %s: WordPress Field Guide link. */
/* translators: 1: WordPress Field Guide link, 2: WordPress version number. */
__( 'Explore the <a href="%1$s">WordPress %2$s Field Guide</a>. Learn about the changes in this release with detailed developer notes to help you build with WordPress.' ),
__( 'https://make.wordpress.org/core/2023/10/23/wordpress-6-4-field-guide/' ),
'6.4'
......
......@@ -535,8 +535,8 @@
position: relative;
display: flex;
flex-direction: column;
align-items: start;
justify-content: end;
align-items: flex-start;
justify-content: flex-end;
box-sizing: border-box;
padding: var(--gap) 0;
height: clamp(12.5rem, -1.25rem + 36.67vw, 26.25rem);
......@@ -1127,7 +1127,7 @@
}
.about-wrap .is-vertically-aligned-top {
align-self: start;
align-self: flex-start;
}
.about-wrap .is-vertically-aligned-center {
......
......@@ -534,8 +534,8 @@
position: relative;
display: flex;
flex-direction: column;
align-items: start;
justify-content: end;
align-items: flex-start;
justify-content: flex-end;
box-sizing: border-box;
padding: var(--gap) 0;
height: clamp(12.5rem, -1.25rem + 36.67vw, 26.25rem);
......@@ -1126,7 +1126,7 @@
}
.about-wrap .is-vertically-aligned-top {
align-self: start;
align-self: flex-start;
}
.about-wrap .is-vertically-aligned-center {
......
......@@ -324,7 +324,7 @@ function _register_remote_theme_patterns() {
* @since 6.0.0
* @since 6.1.0 The `postTypes` property was added.
* @since 6.2.0 The `templateTypes` property was added.
* @since 6.4.0 Uses the `_wp_get_block_patterns` function.
* @since 6.4.0 Uses the `WP_Theme::get_block_patterns` method.
* @access private
*/
function _register_theme_block_patterns() {
......
......@@ -518,12 +518,12 @@ function _remove_theme_attribute_from_template_part_block( &$block ) {
*/
function _build_block_template_result_from_file( $template_file, $template_type ) {
$default_template_types = get_default_block_template_types();
$template_content = file_get_contents( $template_file['path'] );
$theme = get_stylesheet();
$template = new WP_Block_Template();
$template->id = $theme . '//' . $template_file['slug'];
$template->theme = $theme;
$template->content = file_get_contents( $template_file['path'] );
$template->slug = $template_file['slug'];
$template->source = 'theme';
$template->type = $template_type;
......@@ -554,7 +554,7 @@ function _build_block_template_result_from_file( $template_file, $template_type
$before_block_visitor = make_before_block_visitor( $hooked_blocks, $template );
$after_block_visitor = make_after_block_visitor( $hooked_blocks, $template );
}
$blocks = parse_blocks( $template_content );
$blocks = parse_blocks( $template->content );
$template->content = traverse_and_serialize_blocks( $blocks, $before_block_visitor, $after_block_visitor );
return $template;
......
......@@ -116,7 +116,7 @@
*
* Example:
*
* if ( $tags->next_tag( array( 'class' => 'wp-group-block' ) ) ) {
* if ( $tags->next_tag( array( 'class_name' => 'wp-group-block' ) ) ) {
* $tags->set_attribute( 'title', 'This groups the contained content.' );
* $tags->remove_attribute( 'data-test-id' );
* }
......
......@@ -94,4 +94,13 @@ class WP_HTML_Token {
call_user_func( $this->on_destroy, $this->bookmark_name );
}
}
/**
* Wakeup magic method.
*
* @since 6.4.2
*/
public function __wakeup() {
throw new \LogicException( __CLASS__ . ' should never be unserialized' );
}
}
......
......@@ -491,8 +491,6 @@ function update_blog_option( $id, $option, $value, $deprecated = null ) {
* @global array $_wp_switched_stack
* @global bool $switched
* @global string $table_prefix
* @global string $wp_template_path
* @global string $wp_stylesheet_path
* @global WP_Object_Cache $wp_object_cache
*
* @param int $new_blog_id The ID of the blog to switch to. Default: current blog.
......@@ -534,10 +532,8 @@ function switch_to_blog( $new_blog_id, $deprecated = null ) {
}
$wpdb->set_blog_id( $new_blog_id );
$GLOBALS['table_prefix'] = $wpdb->get_blog_prefix();
$GLOBALS['blog_id'] = $new_blog_id;
$GLOBALS['wp_template_path'] = null;
$GLOBALS['wp_stylesheet_path'] = null;
$GLOBALS['table_prefix'] = $wpdb->get_blog_prefix();
$GLOBALS['blog_id'] = $new_blog_id;
if ( function_exists( 'wp_cache_switch_to_blog' ) ) {
wp_cache_switch_to_blog( $new_blog_id );
......@@ -604,8 +600,6 @@ function switch_to_blog( $new_blog_id, $deprecated = null ) {
* @global int $blog_id
* @global bool $switched
* @global string $table_prefix
* @global string $wp_template_path
* @global string $wp_stylesheet_path
* @global WP_Object_Cache $wp_object_cache
*
* @return bool True on success, false if we're already on the current blog.
......@@ -631,10 +625,8 @@ function restore_current_blog() {
}
$wpdb->set_blog_id( $new_blog_id );
$GLOBALS['blog_id'] = $new_blog_id;
$GLOBALS['table_prefix'] = $wpdb->get_blog_prefix();
$GLOBALS['wp_template_path'] = null;
$GLOBALS['wp_stylesheet_path'] = null;
$GLOBALS['blog_id'] = $new_blog_id;
$GLOBALS['table_prefix'] = $wpdb->get_blog_prefix();
if ( function_exists( 'wp_cache_switch_to_blog' ) ) {
wp_cache_switch_to_blog( $new_blog_id );
......
......@@ -1294,6 +1294,13 @@ class WP_REST_Server {
$this->add_active_theme_link_to_index( $response );
$this->add_site_logo_to_index( $response );
$this->add_site_icon_to_index( $response );
} else {
if ( rest_is_field_included( 'site_logo', $fields ) ) {
$this->add_site_logo_to_index( $response );
}
if ( rest_is_field_included( 'site_icon', $fields ) || rest_is_field_included( 'site_icon_url', $fields ) ) {
$this->add_site_icon_to_index( $response );
}
}
/**
......
......@@ -188,39 +188,25 @@ function get_stylesheet() {
*
* @since 1.5.0
* @since 6.4.0 Memoizes filter execution so that it only runs once for the current theme.
*
* @global string $wp_stylesheet_path Current theme stylesheet directory path.
* @since 6.4.2 Memoization removed.
*
* @return string Path to active theme's stylesheet directory.
*/
function get_stylesheet_directory() {
global $wp_stylesheet_path;
if ( null === $wp_stylesheet_path ) {
$stylesheet = get_stylesheet();
$theme_root = get_theme_root( $stylesheet );
$stylesheet_dir = "$theme_root/$stylesheet";
/**
* Filters the stylesheet directory path for the active theme.
*
* @since 1.5.0
*
* @param string $stylesheet_dir Absolute path to the active theme.
* @param string $stylesheet Directory name of the active theme.
* @param string $theme_root Absolute path to themes directory.
*/
$stylesheet_dir = apply_filters( 'stylesheet_directory', $stylesheet_dir, $stylesheet, $theme_root );
// If there are filter callbacks, force the logic to execute on every call.
if ( has_filter( 'stylesheet' ) || has_filter( 'theme_root' ) || has_filter( 'stylesheet_directory' ) ) {
return $stylesheet_dir;
}
$stylesheet = get_stylesheet();
$theme_root = get_theme_root( $stylesheet );
$stylesheet_dir = "$theme_root/$stylesheet";
$wp_stylesheet_path = $stylesheet_dir;
}
return $wp_stylesheet_path;
/**
* Filters the stylesheet directory path for the active theme.
*
* @since 1.5.0
*
* @param string $stylesheet_dir Absolute path to the active theme.
* @param string $stylesheet Directory name of the active theme.
* @param string $theme_root Absolute path to themes directory.
*/
return apply_filters( 'stylesheet_directory', $stylesheet_dir, $stylesheet, $theme_root );
}
/**
......@@ -338,39 +324,25 @@ function get_template() {
*
* @since 1.5.0
* @since 6.4.0 Memoizes filter execution so that it only runs once for the current theme.
*
* @global string $wp_template_path Current theme template directory path.
* @since 6.4.1 Memoization removed.
*
* @return string Path to active theme's template directory.
*/
function get_template_directory() {
global $wp_template_path;
if ( null === $wp_template_path ) {
$template = get_template();
$theme_root = get_theme_root( $template );
$template_dir = "$theme_root/$template";
$template = get_template();
$theme_root = get_theme_root( $template );
$template_dir = "$theme_root/$template";
/**
* Filters the active theme directory path.
*
* @since 1.5.0
*
* @param string $template_dir The path of the active theme directory.
* @param string $template Directory name of the active theme.
* @param string $theme_root Absolute path to the themes directory.
*/
$template_dir = apply_filters( 'template_directory', $template_dir, $template, $theme_root );
// If there are filter callbacks, force the logic to execute on every call.
if ( has_filter( 'template' ) || has_filter( 'theme_root' ) || has_filter( 'template_directory' ) ) {
return $template_dir;
}
$wp_template_path = $template_dir;
}
return $wp_template_path;
/**
* Filters the active theme directory path.
*
* @since 1.5.0
*
* @param string $template_dir The path of the active theme directory.
* @param string $template Directory name of the active theme.
* @param string $theme_root Absolute path to the themes directory.
*/
return apply_filters( 'template_directory', $template_dir, $template, $theme_root );
}
/**
......@@ -776,13 +748,11 @@ function locale_stylesheet() {
* @global WP_Customize_Manager $wp_customize
* @global array $sidebars_widgets
* @global array $wp_registered_sidebars
* @global string $wp_stylesheet_path
* @global string $wp_template_path
*
* @param string $stylesheet Stylesheet name.
*/
function switch_theme( $stylesheet ) {
global $wp_theme_directories, $wp_customize, $sidebars_widgets, $wp_registered_sidebars, $wp_stylesheet_path, $wp_template_path;
global $wp_theme_directories, $wp_customize, $sidebars_widgets, $wp_registered_sidebars;
$requirements = validate_theme_requirements( $stylesheet );
if ( is_wp_error( $requirements ) ) {
......@@ -866,13 +836,6 @@ function switch_theme( $stylesheet ) {
update_option( 'theme_switched', $old_theme->get_stylesheet() );
/*
* Reset globals to force refresh the next time these directories are
* accessed via `get_stylesheet_directory()` / `get_template_directory()`.
*/
$wp_stylesheet_path = null;
$wp_template_path = null;
// Clear pattern caches.
$new_theme->delete_pattern_cache();
$old_theme->delete_pattern_cache();
......
......@@ -16,7 +16,7 @@
*
* @global string $wp_version
*/
$wp_version = '6.4.1';
$wp_version = '6.4.2';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
......