WordPress Version: 5.4
/**
* Ajax handler for closed post boxes.
*
* @since 3.1.0
*/
function wp_ajax_closed_postboxes()
{
check_ajax_referer('closedpostboxes', 'closedpostboxesnonce');
$closed = isset($_POST['closed']) ? explode(',', $_POST['closed']) : array();
$closed = array_filter($closed);
$hidden = isset($_POST['hidden']) ? explode(',', $_POST['hidden']) : array();
$hidden = array_filter($hidden);
$page = isset($_POST['page']) ? $_POST['page'] : '';
if (sanitize_key($page) != $page) {
wp_die(0);
}
$user = wp_get_current_user();
if (!$user) {
wp_die(-1);
}
if (is_array($closed)) {
update_user_option($user->ID, "closedpostboxes_{$page}", $closed, true);
}
if (is_array($hidden)) {
// Postboxes that are always shown.
$hidden = array_diff($hidden, array('submitdiv', 'linksubmitdiv', 'manage-menu', 'create-menu'));
update_user_option($user->ID, "metaboxhidden_{$page}", $hidden, true);
}
wp_die(1);
}