Make WordPress Core


Ignore:
Timestamp:
09/26/2023 01:45:23 PM (3 years ago)
Author:
SergeyBiryukov
Message:

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:

Follow-up to [55851], [56382].

Props aristath, jrf, spacedmonkey, mukesh27, swissspidy, hellofromTonya.
Fixes #59405.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/block-supports/background.php

    r56614 r56709  
    5959        }
    6060
    61         $background_image_source = _wp_array_get( $block_attributes, array( 'style', 'background', 'backgroundImage', 'source' ), null );
    62         $background_image_url    = _wp_array_get( $block_attributes, array( 'style', 'background', 'backgroundImage', 'url' ), null );
    63         $background_size         = _wp_array_get( $block_attributes, array( 'style', 'background', 'backgroundSize' ), 'cover' );
     61        $background_image_source = isset( $block_attributes['style']['background']['backgroundImage']['source'] )
     62                ? $block_attributes['style']['background']['backgroundImage']['source']
     63                : null;
     64        $background_image_url    = isset( $block_attributes['style']['background']['backgroundImage']['url'] )
     65                ? $block_attributes['style']['background']['backgroundImage']['url']
     66                : null;
     67        $background_size         = isset( $block_attributes['style']['background']['backgroundSize'] )
     68                ? $block_attributes['style']['background']['backgroundSize']
     69                : 'cover';
    6470
    6571        $background_block_styles = array();
Note: See TracChangeset for help on using the changeset viewer.