WordPress Version: 5.4
/**
* Gets available core updates.
*
* @since 2.7.0
*
* @param array $options Set $options['dismissed'] to true to show dismissed upgrades too,
* set $options['available'] to false to skip not-dismissed updates.
* @return array|false Array of the update objects on success, false on failure.
*/
function get_core_updates($options = array())
{
$options = array_merge(array('available' => true, 'dismissed' => false), $options);
$dismissed = get_site_option('dismissed_update_core');
if (!is_array($dismissed)) {
$dismissed = array();
}
$from_api = get_site_transient('update_core');
if (!isset($from_api->updates) || !is_array($from_api->updates)) {
return false;
}
$updates = $from_api->updates;
$result = array();
foreach ($updates as $update) {
if ('autoupdate' === $update->response) {
continue;
}
if (array_key_exists($update->current . '|' . $update->locale, $dismissed)) {
if ($options['dismissed']) {
$update->dismissed = true;
$result[] = $update;
}
} else if ($options['available']) {
$update->dismissed = false;
$result[] = $update;
}
}
return $result;
}