wp_convert_widget_settings

The timeline below displays how wordpress function wp_convert_widget_settings has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 5.5

/**
 * Converts the widget settings from single to multi-widget format.
 *
 * @since 2.8.0
 *
 * @global array $_wp_sidebars_widgets
 *
 * @param string $base_name   Root ID for all widgets of this type.
 * @param string $option_name Option name for this widget type.
 * @param array  $settings    The array of widget instance settings.
 * @return array The array of widget settings converted to multi-widget format.
 */
function wp_convert_widget_settings($base_name, $option_name, $settings)
{
    // This test may need expanding.
    $single = false;
    $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;
}

WordPress Version: 5.4

/**
 * Convert the widget settings from single to multi-widget format.
 *
 * @since 2.8.0
 *
 * @global array $_wp_sidebars_widgets
 *
 * @param string $base_name
 * @param string $option_name
 * @param array  $settings
 * @return array
 */
function wp_convert_widget_settings($base_name, $option_name, $settings)
{
    // This test may need expanding.
    $single = false;
    $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;
}

WordPress Version: 5.3

/**
 * Convert the widget settings from single to multi-widget format.
 *
 * @since 2.8.0
 *
 * @global array $_wp_sidebars_widgets
 *
 * @param string $base_name
 * @param string $option_name
 * @param array  $settings
 * @return array
 */
function wp_convert_widget_settings($base_name, $option_name, $settings)
{
    // This test may need expanding.
    $single = false;
    $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;
}

WordPress Version: 4.3

/**
 * Convert the widget settings from single to multi-widget format.
 *
 * @since 2.8.0
 *
 * @global array $_wp_sidebars_widgets
 *
 * @param string $base_name
 * @param string $option_name
 * @param array  $settings
 * @return array
 */
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;
}

WordPress Version: 4.1

/**
 * Convert the widget settings from single to multi-widget format.
 *
 * @since 2.8.0
 *
 * @param string $base_name
 * @param string $option_name
 * @param array  $settings
 * @return array
 */
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;
}

WordPress Version: 3.7

/**
 * Convert the widget settings from single to multi-widget format.
 *
 * @since 2.8.0
 *
 * @return array
 */
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;
}