Make WordPress Core


Ignore:
Timestamp:
09/26/2023 01:45:23 PM (20 months 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/settings.php

    r56382 r56709  
    4646
    4747    // return early if no settings are found on the block attributes.
    48     $block_settings = _wp_array_get( $block, array( 'attrs', 'settings' ), null );
     48    $block_settings = isset( $block['attrs']['settings'] ) ? $block['attrs']['settings'] : null;
    4949    if ( empty( $block_settings ) ) {
    5050        return $block_content;
     
    8383
    8484    // return early if no settings are found on the block attributes.
    85     $block_settings = _wp_array_get( $block, array( 'attrs', 'settings' ), null );
     85    $block_settings = isset( $block['attrs']['settings'] ) ? $block['attrs']['settings'] : null;
    8686    if ( empty( $block_settings ) ) {
    8787        return null;
Note: See TracChangeset for help on using the changeset viewer.