WordPress Version: 6.1
/**
* Retrieves the update link if there is a theme update available.
*
* Will return a link if there is an update available.
*
* @since 3.8.0
*
* @param WP_Theme $theme WP_Theme object.
* @return string|false HTML for the update link, or false if invalid info was passed.
*/
function get_theme_update_available($theme)
{
static $themes_update = null;
if (!current_user_can('update_themes')) {
return false;
}
if (!isset($themes_update)) {
$themes_update = get_site_transient('update_themes');
}
if (!$theme instanceof WP_Theme) {
return false;
}
$stylesheet = $theme->get_stylesheet();
$html = '';
if (isset($themes_update->response[$stylesheet])) {
$update = $themes_update->response[$stylesheet];
$theme_name = $theme->display('Name');
$details_url = add_query_arg(array('TB_iframe' => 'true', 'width' => 1024, 'height' => 800), $update['url']);
// Theme browser inside WP? Replace this. Also, theme preview JS will override this on the available list.
$update_url = wp_nonce_url(admin_url('update.php?action=upgrade-theme&theme=' . urlencode($stylesheet)), 'upgrade-theme_' . $stylesheet);
if (!is_multisite()) {
if (!current_user_can('update_themes')) {
$html = sprintf(
/* translators: 1: Theme name, 2: Theme details URL, 3: Additional link attributes, 4: Version number. */
'<p><strong>' . __('There is a new version of %1$s available. <a href="%2$s" %3$s>View version %4$s details</a>.') . '</strong></p>',
$theme_name,
esc_url($details_url),
sprintf(
'class="thickbox open-plugin-details-modal" aria-label="%s"',
/* translators: 1: Theme name, 2: Version number. */
esc_attr(sprintf(__('View %1$s version %2$s details'), $theme_name, $update['new_version']))
),
$update['new_version']
);
} elseif (empty($update['package'])) {
$html = sprintf(
/* translators: 1: Theme name, 2: Theme details URL, 3: Additional link attributes, 4: Version number. */
'<p><strong>' . __('There is a new version of %1$s available. <a href="%2$s" %3$s>View version %4$s details</a>. <em>Automatic update is unavailable for this theme.</em>') . '</strong></p>',
$theme_name,
esc_url($details_url),
sprintf(
'class="thickbox open-plugin-details-modal" aria-label="%s"',
/* translators: 1: Theme name, 2: Version number. */
esc_attr(sprintf(__('View %1$s version %2$s details'), $theme_name, $update['new_version']))
),
$update['new_version']
);
} else {
$html = sprintf(
/* translators: 1: Theme name, 2: Theme details URL, 3: Additional link attributes, 4: Version number, 5: Update URL, 6: Additional link attributes. */
'<p><strong>' . __('There is a new version of %1$s available. <a href="%2$s" %3$s>View version %4$s details</a> or <a href="%5$s" %6$s>update now</a>.') . '</strong></p>',
$theme_name,
esc_url($details_url),
sprintf(
'class="thickbox open-plugin-details-modal" aria-label="%s"',
/* translators: 1: Theme name, 2: Version number. */
esc_attr(sprintf(__('View %1$s version %2$s details'), $theme_name, $update['new_version']))
),
$update['new_version'],
$update_url,
sprintf(
'aria-label="%s" id="update-theme" data-slug="%s"',
/* translators: %s: Theme name. */
esc_attr(sprintf(_x('Update %s now', 'theme'), $theme_name)),
$stylesheet
)
);
}
}
}
return $html;
}