将窗口小部件设置从单个窗口小部件转换为多窗口小部

原型

wp_convert_widget_settings( string $base_name, string $option_name, array $settings )

参数

$base_name (string) (Required)

$option_name (string) (Required)

$settings (array) (Required)

返回值

(array)  

源文件

路径:wp-includes/widgets.php

<?php
...
function wp_convert_widget_settings($base_name, $option_name, $settings) {
	// This test may need expanding.
	$single = $changed = false;
	if ( empty($settings) ) {
		$single = true;
	} else {
		foreach ( array_keys($settings) as $number ) {
			if ( 'number' == $number )
				continue;
			if ( !is_numeric($number) ) {
				$single = true;
				break;
			}
		}
	}
	if ( $single ) {
		$settings = array( 2 => $settings );
		// If loading from the front page, update sidebar in memory but don't save to options
		if ( is_admin() ) {
			$sidebars_widgets = get_option('sidebars_widgets');
		} else {
			if ( empty($GLOBALS['_wp_sidebars_widgets']) )
				$GLOBALS['_wp_sidebars_widgets'] = get_option('sidebars_widgets', array());
			$sidebars_widgets = &$GLOBALS['_wp_sidebars_widgets'];
		}
		foreach ( (array) $sidebars_widgets as $index => $sidebar ) {
			if ( is_array($sidebar) ) {
				foreach ( $sidebar as $i => $name ) {
					if ( $base_name == $name ) {
						$sidebars_widgets[$index][$i] = "$name-2";
						$changed = true;
						break 2;
					}
				}
			}
		}
		if ( is_admin() && $changed )
			update_option('sidebars_widgets', $sidebars_widgets);
	}
	$settings['_multiwidget'] = 1;
	if ( is_admin() )
		update_option( $option_name, $settings );
	return $settings;
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/wp_convert_widget_settings/