WordPress Version: 6.3
/**
* Handles saving the widgets order via AJAX.
*
* @since 3.1.0
*/
function wp_ajax_widgets_order()
{
check_ajax_referer('save-sidebar-widgets', 'savewidgets');
if (!current_user_can('edit_theme_options')) {
wp_die(-1);
}
unset($_POST['savewidgets'], $_POST['action']);
// Save widgets order for all sidebars.
if (is_array($_POST['sidebars'])) {
$sidebars = array();
foreach (wp_unslash($_POST['sidebars']) as $key => $val) {
$sb = array();
if (!empty($val)) {
$val = explode(',', $val);
foreach ($val as $k => $v) {
if (!str_contains($v, 'widget-')) {
continue;
}
$sb[$k] = substr($v, strpos($v, '_') + 1);
}
}
$sidebars[$key] = $sb;
}
wp_set_sidebars_widgets($sidebars);
wp_die(1);
}
wp_die(-1);
}