Themes: Replace array_map() usage in WP_Theme_JSON::get_default_slugs().

When loading a page on the frontend using Xdebug & Webgrind, with the Twenty Twenty-Three theme and no plugins activated, the biggest performance bottleneck currently (on the PHP side) is `WP_Theme_JSON::merge()`. Analysing the data a bit more, it became evident that `WP_Theme_JSON::get_default_slugs()` is the part of that method which takes most of the resources and time.

Further analysis of the method revealed that `array_map()` was the call that slowed it down.

This commit replaces the `array_map()` call with a simple `foreach` loop, improving page load speed significantly.

Follow-up to [52275], [52364].

Props aristath.
Fixes #56745.

git-svn-id: https://develop.svn.wordpress.org/trunk@54398 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Sergey Biryukov
2022-10-06 15:25:47 +00:00
parent e5a0d1364d
commit 5cabf6737e

View File

@@ -2422,12 +2422,12 @@ class WP_Theme_JSON {
}
$slugs_for_preset = array();
$slugs_for_preset = array_map(
static function( $value ) {
return isset( $value['slug'] ) ? $value['slug'] : null;
},
$preset
);
foreach ( $preset as $item ) {
if ( isset( $item['slug'] ) ) {
$slugs_for_preset[] = $item['slug'];
}
}
_wp_array_set( $slugs, $metadata['path'], $slugs_for_preset );
}