[wp-trac] [WordPress Trac] #57469: retrieve_widgets(): fatal error when a sidebar's widgets set to null (array is expected)

WordPress Trac noreply at wordpress.org
Thu Sep 11 10:34:30 UTC 2025


#57469: retrieve_widgets(): fatal error when a sidebar's widgets set to null (array
is expected)
--------------------------------------+------------------------------
 Reporter:  kesselb                   |       Owner:  (none)
     Type:  defect (bug)              |      Status:  reopened
 Priority:  normal                    |   Milestone:  Awaiting Review
Component:  Widgets                   |     Version:  4.9
 Severity:  normal                    |  Resolution:
 Keywords:  has-patch has-unit-tests  |     Focuses:
--------------------------------------+------------------------------

Comment (by pmbaldha):

 == Test Report
 ✅ The test report validates that the issue can be reproduced in the
 current Trunk branch and the patch is resolving the fatal error.

 Patch tested: https://github.com/WordPress/wordpress-develop/pull/9603

 === Environment
 - WordPress: 6.9-alpha-60093-src
 - PHP: 8.2.29
 - Server: nginx/1.29.1
 - Database: mysqli (Server: 8.4.6 / Client: mysqlnd 8.2.29)
 - Browser: Chrome 140.0.0.0
 - OS: Windows 10/11
 - Theme: Twenty Seventeen 3.9
 - MU Plugins:
   * test.php
 - Plugins:
   * Test Reports 1.2.0


 === Steps to Reproduce or Test
 1. Setup a WordPress website.
 2. Open PHPMyAdmin and run the below SQL queries:
 DELETE FROM `wp_options` WHERE `option_name` = 'sidebars_widgets';
 INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`)
 VALUES
 ('sidebars_widgets','a:2:{s:19:"wp_inactive_widgets";N;s:9:"sidebar-1";N;}','yes');


 3. 🐞 Open the Admin Dashboard and you will face the error as below:
 Fatal error: Uncaught TypeError: array_merge(): Argument #2 must be of
 type array, null given in /var/www/src/wp-includes/widgets.php:1354 Stack
 trace: #0 /var/www/src/wp-includes/widgets.php(1354): array_merge(Array,
 NULL, Array, Array) #1 /var/www/src/wp-includes/widgets.php(1299):
 retrieve_widgets(true) #2 /var/www/src/wp-includes/class-wp-hook.php(326):
 _wp_sidebars_changed('Twenty Nineteen') #3 /var/www/src/wp-includes/class-
 wp-hook.php(348): WP_Hook->apply_filters(NULL, Array) #4 /var/www/src/wp-
 includes/plugin.php(517): WP_Hook->do_action(Array) #5 /var/www/src/wp-
 includes/theme.php(3504): do_action('after_switch_th...', 'Twenty
 Nineteen', Object(WP_Theme)) #6 /var/www/src/wp-includes/class-wp-
 hook.php(324): check_theme_switched('') #7 /var/www/src/wp-includes/class-
 wp-hook.php(348): WP_Hook->apply_filters(NULL, Array) #8 /var/www/src/wp-
 includes/plugin.php(517): WP_Hook->do_action(Array) #9 /var/www/src/wp-
 settings.php(728): do_action('init') #10 /var/www/wp-config.php(107):
 require_once('/var/www/src/wp...') #11 /var/www/src/wp-load.php(55):
 require_once('/var/www/wp-con...') #12 /var/www/src/wp-
 admin/admin.php(35): require_once('/var/www/src/wp...') #13 /var/www/src
 /wp-admin/_index.php(10): require_once('/var/www/src/wp...') #14
 /var/www/src/wp-admin/index.php(10): require_once('/var/www/src/wp...')
 #15 {main} thrown in /var/www/src/wp-includes/widgets.php on line 1354


 === Expected Results
 When testing a patch to validate it works as expected:
 - ✅ The Admin Dashboard should load without any fatal error.

 When reproducing a bug:
 - 🐞 Open the Admin Dashboard and you will face the error as below:
 Fatal error: Uncaught TypeError: array_merge(): Argument #2 must be of
 type array, null given in /var/www/src/wp-includes/widgets.php:1354 Stack
 trace: #0 /var/www/src/wp-includes/widgets.php(1354): array_merge(Array,
 NULL, Array, Array) #1 /var/www/src/wp-includes/widgets.php(1299):
 retrieve_widgets(true) #2 /var/www/src/wp-includes/class-wp-hook.php(326):
 _wp_sidebars_changed('Twenty Nineteen') #3 /var/www/src/wp-includes/class-
 wp-hook.php(348): WP_Hook->apply_filters(NULL, Array) #4 /var/www/src/wp-
 includes/plugin.php(517): WP_Hook->do_action(Array) #5 /var/www/src/wp-
 includes/theme.php(3504): do_action('after_switch_th...', 'Twenty
 Nineteen', Object(WP_Theme)) #6 /var/www/src/wp-includes/class-wp-
 hook.php(324): check_theme_switched('') #7 /var/www/src/wp-includes/class-
 wp-hook.php(348): WP_Hook->apply_filters(NULL, Array) #8 /var/www/src/wp-
 includes/plugin.php(517): WP_Hook->do_action(Array) #9 /var/www/src/wp-
 settings.php(728): do_action('init') #10 /var/www/wp-config.php(107):
 require_once('/var/www/src/wp...') #11 /var/www/src/wp-load.php(55):
 require_once('/var/www/wp-con...') #12 /var/www/src/wp-
 admin/admin.php(35): require_once('/var/www/src/wp...') #13 /var/www/src
 /wp-admin/_index.php(10): require_once('/var/www/src/wp...') #14
 /var/www/src/wp-admin/index.php(10): require_once('/var/www/src/wp...')
 #15 {main} thrown in /var/www/src/wp-includes/widgets.php on line 1354


 ==== Actual Results
 When reproducing a bug/defect:
 - 🐞 The Fatal error occurs.

 Fatal error: Uncaught TypeError: array_merge(): Argument #2 must be of
 type array, null given in /var/www/src/wp-includes/widgets.php:1354 Stack
 trace: #0 /var/www/src/wp-includes/widgets.php(1354): array_merge(Array,
 NULL, Array, Array) #1 /var/www/src/wp-includes/widgets.php(1299):
 retrieve_widgets(true) #2 /var/www/src/wp-includes/class-wp-hook.php(326):
 _wp_sidebars_changed('Twenty Nineteen') #3 /var/www/src/wp-includes/class-
 wp-hook.php(348): WP_Hook->apply_filters(NULL, Array) #4 /var/www/src/wp-
 includes/plugin.php(517): WP_Hook->do_action(Array) #5 /var/www/src/wp-
 includes/theme.php(3504): do_action('after_switch_th...', 'Twenty
 Nineteen', Object(WP_Theme)) #6 /var/www/src/wp-includes/class-wp-
 hook.php(324): check_theme_switched('') #7 /var/www/src/wp-includes/class-
 wp-hook.php(348): WP_Hook->apply_filters(NULL, Array) #8 /var/www/src/wp-
 includes/plugin.php(517): WP_Hook->do_action(Array) #9 /var/www/src/wp-
 settings.php(728): do_action('init') #10 /var/www/wp-config.php(107):
 require_once('/var/www/src/wp...') #11 /var/www/src/wp-load.php(55):
 require_once('/var/www/wp-con...') #12 /var/www/src/wp-
 admin/admin.php(35): require_once('/var/www/src/wp...') #13 /var/www/src
 /wp-admin/_index.php(10): require_once('/var/www/src/wp...') #14
 /var/www/src/wp-admin/index.php(10): require_once('/var/www/src/wp...')
 #15 {main} thrown in /var/www/src/wp-includes/widgets.php on line 1354


 When testing the bugfix patch:
 - ✅ The Fatal error resolved with the patch.

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/57469#comment:25>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list