mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-10-05 23:27:04 +00:00
Editor: Reduce the use of the _wp_array_get() function to improve performance.
`_wp_array_get()` is an expensive function, and it's called thousands of times on each page view on the front end. While the function performance was slightly improved in #58376, it is still called more times than it should be. This commit aims to further optimize its usage: * In many cases, `_wp_array_get()` can be replaced with a much simpler and faster `isset()` check. * The `isset()` function is capable of checking nested arrays, so `isset( $foo['a']['b']['c'] )` will return false even if `$foo['a']` is unset, without throwing any errors or warnings. * When `_wp_array_get()` cannot be directly replaced with `isset()`, it would be good practice to wrap it in an `isset()` function so that `_wp_array_get()` only runs when it needs to. Original PR from Gutenberg repository: * [https://github.com/WordPress/gutenberg/pull/51116 #51116 Performance improvement: Reduce the use of the _wp_array_get() function] Follow-up to [55851], [56382]. Props aristath, jrf, spacedmonkey, mukesh27, swissspidy, hellofromTonya. Fixes #59405. git-svn-id: https://develop.svn.wordpress.org/trunk@56709 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -971,7 +971,9 @@ class WP_Duotone {
|
||||
* If the experimental duotone support was set, that value is to be
|
||||
* treated as a selector and requires scoping.
|
||||
*/
|
||||
$experimental_duotone = _wp_array_get( $block_type->supports, array( 'color', '__experimentalDuotone' ), false );
|
||||
$experimental_duotone = isset( $block_type->supports['color']['__experimentalDuotone'] )
|
||||
? $block_type->supports['color']['__experimentalDuotone']
|
||||
: false;
|
||||
if ( $experimental_duotone ) {
|
||||
$root_selector = wp_get_block_css_selector( $block_type );
|
||||
return is_string( $experimental_duotone )
|
||||
@@ -1000,7 +1002,7 @@ class WP_Duotone {
|
||||
}
|
||||
// Get the per block settings from the theme.json.
|
||||
$tree = wp_get_global_settings();
|
||||
$presets_by_origin = _wp_array_get( $tree, array( 'color', 'duotone' ), array() );
|
||||
$presets_by_origin = isset( $tree['color']['duotone'] ) ? $tree['color']['duotone'] : array();
|
||||
|
||||
self::$global_styles_presets = array();
|
||||
foreach ( $presets_by_origin as $presets ) {
|
||||
@@ -1262,7 +1264,9 @@ class WP_Duotone {
|
||||
* @return array Filtered block type settings.
|
||||
*/
|
||||
public static function migrate_experimental_duotone_support_flag( $settings, $metadata ) {
|
||||
$duotone_support = _wp_array_get( $metadata, array( 'supports', 'color', '__experimentalDuotone' ), null );
|
||||
$duotone_support = isset( $metadata['supports']['color']['__experimentalDuotone'] )
|
||||
? $metadata['supports']['color']['__experimentalDuotone']
|
||||
: null;
|
||||
|
||||
if ( ! isset( $settings['supports']['filter']['duotone'] ) && null !== $duotone_support ) {
|
||||
_wp_array_set( $settings, array( 'supports', 'filter', 'duotone' ), (bool) $duotone_support );
|
||||
|
||||
Reference in New Issue
Block a user