Make WordPress Core


Ignore:
Timestamp:
09/12/2025 06:03:16 PM (2 months ago)
Author:
westonruter
Message:

Widgets: Prevent fatal errors in PHP 8 when retrieve_widgets() and wp_map_sidebars_widgets() attempt to merge non-array values.

Props kesselb, lakshyajeet, hellofromTonya, janthiel, ikriv, audrasjb, mtg169, bartnv, pmbaldha, mindctrl, westonruter, jrf.
Fixes #57469.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/widgets.php

    r59702 r60732  
    13511351    $sidebars_widgets = wp_map_sidebars_widgets( $sidebars_widgets );
    13521352
     1353    // Replace non-array values inside the array with an empty array.
     1354    foreach ( $sidebars_widgets as $key => $value ) {
     1355        if ( ! is_array( $value ) ) {
     1356            $sidebars_widgets[ $key ] = array();
     1357        }
     1358    }
     1359
    13531360    // Find hidden/lost multi-widget instances.
    13541361    $shown_widgets = array_merge( ...array_values( $sidebars_widgets ) );
     
    15111518
    15121519        $old_sidebars_widgets = _wp_remove_unregistered_widgets( $old_sidebars_widgets );
     1520
     1521        // Replace non-array values inside the array with an empty array.
     1522        foreach ( $new_sidebars_widgets as $key => $value ) {
     1523            if ( ! is_array( $value ) ) {
     1524                $new_sidebars_widgets[ $key ] = array();
     1525            }
     1526        }
    15131527
    15141528        if ( ! empty( $old_sidebars_widgets ) ) {
Note: See TracChangeset for help on using the changeset viewer.