WordPress Version: 5.4
/**
* Private. Sets all user interface settings.
*
* @since 2.8.0
* @access private
*
* @global array $_updated_user_settings
*
* @param array $user_settings User settings.
* @return bool|null False if the current user can't be found, null if the current
* user is not a super admin or a member of the site, otherwise true.
*/
function wp_set_all_user_settings($user_settings)
{
global $_updated_user_settings;
$user_id = get_current_user_id();
if (!$user_id) {
return false;
}
if (!is_user_member_of_blog()) {
return;
}
$settings = '';
foreach ($user_settings as $name => $value) {
$_name = preg_replace('/[^A-Za-z0-9_-]+/', '', $name);
$_value = preg_replace('/[^A-Za-z0-9_-]+/', '', $value);
if (!empty($_name)) {
$settings .= $_name . '=' . $_value . '&';
}
}
$settings = rtrim($settings, '&');
parse_str($settings, $_updated_user_settings);
update_user_option($user_id, 'user-settings', $settings, false);
update_user_option($user_id, 'user-settings-time', time(), false);
return true;
}