Commit 661996a40f for wordpress.org

commit 661996a40fc52f8a9318537ce8ded36f3842fa7c
Author: Weston Ruter <weston@xwp.co>
Date:   Mon Jan 5 05:33:32 2026 +0000

    Code Modernization: Widgets: Use null coalescing operator instead of `isset()` ternaries.

    Developed as a subset of https://github.com/WordPress/wordpress-develop/pull/10654
    Initially developed in https://github.com/WordPress/wordpress-develop/pull/4886

    Follow-up to [61431], [61430], [61429], [61424], [61404], [61403].

    Props costdev, westonruter.
    See #58874, #63430.

    Built from https://develop.svn.wordpress.org/trunk@61432


    git-svn-id: http://core.svn.wordpress.org/trunk@60744 1a063a9b-81f0-0310-95a4-ce76da25c4cd

diff --git a/wp-admin/includes/widgets.php b/wp-admin/includes/widgets.php
index 20cb5e159f..d4a370a1a3 100644
--- a/wp-admin/includes/widgets.php
+++ b/wp-admin/includes/widgets.php
@@ -137,7 +137,7 @@ function wp_list_widget_controls_dynamic_sidebar( $params ) {
 	++$i;

 	$widget_id = $params[0]['widget_id'];
-	$id        = isset( $params[0]['_temp_id'] ) ? $params[0]['_temp_id'] : $widget_id;
+	$id        = $params[0]['_temp_id'] ?? $widget_id;
 	$hidden    = isset( $params[0]['_hide'] ) ? ' style="display:none;"' : '';

 	$params[0]['before_widget'] = "<div id='widget-{$i}_{$id}' class='widget'$hidden>";
@@ -191,23 +191,23 @@ function wp_widget_control( $sidebar_args ) {
 	global $wp_registered_widgets, $wp_registered_widget_controls, $sidebars_widgets;

 	$widget_id  = $sidebar_args['widget_id'];
-	$sidebar_id = isset( $sidebar_args['id'] ) ? $sidebar_args['id'] : false;
+	$sidebar_id = $sidebar_args['id'] ?? false;
 	$key        = $sidebar_id ? array_search( $widget_id, $sidebars_widgets[ $sidebar_id ], true ) : '-1'; // Position of widget in sidebar.
-	$control    = isset( $wp_registered_widget_controls[ $widget_id ] ) ? $wp_registered_widget_controls[ $widget_id ] : array();
+	$control    = $wp_registered_widget_controls[ $widget_id ] ?? array();
 	$widget     = $wp_registered_widgets[ $widget_id ];

 	$id_format     = $widget['id'];
-	$widget_number = isset( $control['params'][0]['number'] ) ? $control['params'][0]['number'] : '';
-	$id_base       = isset( $control['id_base'] ) ? $control['id_base'] : $widget_id;
-	$width         = isset( $control['width'] ) ? $control['width'] : '';
-	$height        = isset( $control['height'] ) ? $control['height'] : '';
-	$multi_number  = isset( $sidebar_args['_multi_num'] ) ? $sidebar_args['_multi_num'] : '';
-	$add_new       = isset( $sidebar_args['_add'] ) ? $sidebar_args['_add'] : '';
-
-	$before_form           = isset( $sidebar_args['before_form'] ) ? $sidebar_args['before_form'] : '<form method="post">';
-	$after_form            = isset( $sidebar_args['after_form'] ) ? $sidebar_args['after_form'] : '</form>';
-	$before_widget_content = isset( $sidebar_args['before_widget_content'] ) ? $sidebar_args['before_widget_content'] : '<div class="widget-content">';
-	$after_widget_content  = isset( $sidebar_args['after_widget_content'] ) ? $sidebar_args['after_widget_content'] : '</div>';
+	$widget_number = $control['params'][0]['number'] ?? '';
+	$id_base       = $control['id_base'] ?? $widget_id;
+	$width         = $control['width'] ?? '';
+	$height        = $control['height'] ?? '';
+	$multi_number  = $sidebar_args['_multi_num'] ?? '';
+	$add_new       = $sidebar_args['_add'] ?? '';
+
+	$before_form           = $sidebar_args['before_form'] ?? '<form method="post">';
+	$after_form            = $sidebar_args['after_form'] ?? '</form>';
+	$before_widget_content = $sidebar_args['before_widget_content'] ?? '<div class="widget-content">';
+	$after_widget_content  = $sidebar_args['after_widget_content'] ?? '</div>';

 	$query_arg = array( 'editwidget' => $widget['id'] );
 	if ( $add_new ) {
diff --git a/wp-admin/widgets-form.php b/wp-admin/widgets-form.php
index cde09ca47c..0f841d9043 100644
--- a/wp-admin/widgets-form.php
+++ b/wp-admin/widgets-form.php
@@ -139,7 +139,7 @@ if ( isset( $_POST['savewidget'] ) || isset( $_POST['removewidget'] ) ) {
 	$position   = isset( $_POST[ $sidebar_id . '_position' ] ) ? (int) $_POST[ $sidebar_id . '_position' ] - 1 : 0;

 	$id_base = $_POST['id_base'];
-	$sidebar = isset( $sidebars_widgets[ $sidebar_id ] ) ? $sidebars_widgets[ $sidebar_id ] : array();
+	$sidebar = $sidebars_widgets[ $sidebar_id ] ?? array();

 	// Delete.
 	if ( isset( $_POST['removewidget'] ) && $_POST['removewidget'] ) {
@@ -261,14 +261,14 @@ if ( isset( $_GET['editwidget'] ) && $_GET['editwidget'] ) {
 	}

 	if ( ! isset( $sidebar ) ) {
-		$sidebar = isset( $_GET['sidebar'] ) ? $_GET['sidebar'] : 'wp_inactive_widgets';
+		$sidebar = $_GET['sidebar'] ?? 'wp_inactive_widgets';
 	}

 	if ( ! isset( $multi_number ) ) {
-		$multi_number = isset( $control['params'][0]['number'] ) ? $control['params'][0]['number'] : '';
+		$multi_number = $control['params'][0]['number'] ?? '';
 	}

-	$id_base = isset( $control['id_base'] ) ? $control['id_base'] : $control['id'];
+	$id_base = $control['id_base'] ?? $control['id'];

 	// Show the widget form.
 	$width = ' style="width:' . max( $control['width'], 350 ) . 'px"';
diff --git a/wp-includes/class-wp-widget.php b/wp-includes/class-wp-widget.php
index 4773f4b7fa..e72b2798cb 100644
--- a/wp-includes/class-wp-widget.php
+++ b/wp-includes/class-wp-widget.php
@@ -447,7 +447,7 @@ class WP_Widget {
 				$new_instance = stripslashes_deep( $new_instance );
 				$this->_set( $number );

-				$old_instance = isset( $all_instances[ $number ] ) ? $all_instances[ $number ] : array();
+				$old_instance = $all_instances[ $number ] ?? array();

 				$was_cache_addition_suspended = wp_suspend_cache_addition();
 				if ( $this->is_preview() && ! $was_cache_addition_suspended ) {
diff --git a/wp-includes/version.php b/wp-includes/version.php
index 0a895c8816..9bb766580a 100644
--- a/wp-includes/version.php
+++ b/wp-includes/version.php
@@ -16,7 +16,7 @@
  *
  * @global string $wp_version
  */
-$wp_version = '7.0-alpha-61431';
+$wp_version = '7.0-alpha-61432';

 /**
  * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
diff --git a/wp-includes/widgets.php b/wp-includes/widgets.php
index 5bf9d16b31..6b216c2d3c 100644
--- a/wp-includes/widgets.php
+++ b/wp-includes/widgets.php
@@ -190,7 +190,7 @@ function register_sidebars( $number = 1, $args = array() ) {
 				$_args['name'] = sprintf( __( 'Sidebar %d' ), $i );
 			}
 		} else {
-			$_args['name'] = isset( $args['name'] ) ? $args['name'] : __( 'Sidebar' );
+			$_args['name'] = $args['name'] ?? __( 'Sidebar' );
 		}

 		/*
@@ -1495,7 +1495,7 @@ function wp_map_sidebars_widgets( $existing_sidebars_widgets ) {

 	// Sidebars_widgets settings from when this theme was previously active.
 	$old_sidebars_widgets = get_theme_mod( 'sidebars_widgets' );
-	$old_sidebars_widgets = isset( $old_sidebars_widgets['data'] ) ? $old_sidebars_widgets['data'] : false;
+	$old_sidebars_widgets = $old_sidebars_widgets['data'] ?? false;

 	if ( is_array( $old_sidebars_widgets ) ) {

@@ -1718,8 +1718,8 @@ function wp_widget_rss_form( $args, $inputs = null ) {
 	);
 	$inputs         = wp_parse_args( $inputs, $default_inputs );

-	$args['title'] = isset( $args['title'] ) ? $args['title'] : '';
-	$args['url']   = isset( $args['url'] ) ? $args['url'] : '';
+	$args['title'] = $args['title'] ?? '';
+	$args['url']   = $args['url'] ?? '';
 	$args['items'] = isset( $args['items'] ) ? (int) $args['items'] : 0;

 	if ( $args['items'] < 1 || 20 < $args['items'] ) {
diff --git a/wp-includes/widgets/class-wp-nav-menu-widget.php b/wp-includes/widgets/class-wp-nav-menu-widget.php
index 731e5bd7dd..9cdc0a32bf 100644
--- a/wp-includes/widgets/class-wp-nav-menu-widget.php
+++ b/wp-includes/widgets/class-wp-nav-menu-widget.php
@@ -143,8 +143,8 @@ class WP_Nav_Menu_Widget extends WP_Widget {
 	 */
 	public function form( $instance ) {
 		global $wp_customize;
-		$title    = isset( $instance['title'] ) ? $instance['title'] : '';
-		$nav_menu = isset( $instance['nav_menu'] ) ? $instance['nav_menu'] : '';
+		$title    = $instance['title'] ?? '';
+		$nav_menu = $instance['nav_menu'] ?? '';

 		// Get menus.
 		$menus = wp_get_nav_menus();
diff --git a/wp-includes/widgets/class-wp-widget-custom-html.php b/wp-includes/widgets/class-wp-widget-custom-html.php
index bdae2dd38e..4cb17ad365 100644
--- a/wp-includes/widgets/class-wp-widget-custom-html.php
+++ b/wp-includes/widgets/class-wp-widget-custom-html.php
@@ -139,7 +139,7 @@ class WP_Widget_Custom_HTML extends WP_Widget {
 		$simulated_text_widget_instance = array_merge(
 			$instance,
 			array(
-				'text'   => isset( $instance['content'] ) ? $instance['content'] : '',
+				'text'   => $instance['content'] ?? '',
 				'filter' => false, // Because wpautop is not applied.
 				'visual' => false, // Because it wasn't created in TinyMCE.
 			)
diff --git a/wp-includes/widgets/class-wp-widget-links.php b/wp-includes/widgets/class-wp-widget-links.php
index 58ae2a7919..6e9c3e5694 100644
--- a/wp-includes/widgets/class-wp-widget-links.php
+++ b/wp-includes/widgets/class-wp-widget-links.php
@@ -39,14 +39,14 @@ class WP_Widget_Links extends WP_Widget {
 	 * @param array $instance Settings for the current Links widget instance.
 	 */
 	public function widget( $args, $instance ) {
-		$show_description = isset( $instance['description'] ) ? $instance['description'] : false;
-		$show_name        = isset( $instance['name'] ) ? $instance['name'] : false;
-		$show_rating      = isset( $instance['rating'] ) ? $instance['rating'] : false;
-		$show_images      = isset( $instance['images'] ) ? $instance['images'] : true;
-		$category         = isset( $instance['category'] ) ? $instance['category'] : false;
-		$orderby          = isset( $instance['orderby'] ) ? $instance['orderby'] : 'name';
+		$show_description = $instance['description'] ?? false;
+		$show_name        = $instance['name'] ?? false;
+		$show_rating      = $instance['rating'] ?? false;
+		$show_images      = $instance['images'] ?? true;
+		$category         = $instance['category'] ?? false;
+		$orderby          = $instance['orderby'] ?? 'name';
 		$order            = 'rating' === $orderby ? 'DESC' : 'ASC';
-		$limit            = isset( $instance['limit'] ) ? $instance['limit'] : -1;
+		$limit            = $instance['limit'] ?? -1;

 		$before_widget = preg_replace( '/ id="[^"]*"/', ' id="%id"', $args['before_widget'] );

diff --git a/wp-includes/widgets/class-wp-widget-recent-comments.php b/wp-includes/widgets/class-wp-widget-recent-comments.php
index d9afa78a7c..246eac6cf9 100644
--- a/wp-includes/widgets/class-wp-widget-recent-comments.php
+++ b/wp-includes/widgets/class-wp-widget-recent-comments.php
@@ -185,7 +185,7 @@ class WP_Widget_Recent_Comments extends WP_Widget {
 	 * @param array $instance Current settings.
 	 */
 	public function form( $instance ) {
-		$title  = isset( $instance['title'] ) ? $instance['title'] : '';
+		$title  = $instance['title'] ?? '';
 		$number = isset( $instance['number'] ) ? absint( $instance['number'] ) : 5;
 		?>
 		<p>
diff --git a/wp-includes/widgets/class-wp-widget-recent-posts.php b/wp-includes/widgets/class-wp-widget-recent-posts.php
index c73bb5b0bc..c9c4a266a5 100644
--- a/wp-includes/widgets/class-wp-widget-recent-posts.php
+++ b/wp-includes/widgets/class-wp-widget-recent-posts.php
@@ -56,7 +56,7 @@ class WP_Widget_Recent_Posts extends WP_Widget {
 		if ( ! $number ) {
 			$number = 5;
 		}
-		$show_date = isset( $instance['show_date'] ) ? $instance['show_date'] : false;
+		$show_date = $instance['show_date'] ?? false;

 		$r = new WP_Query(
 			/**