', $show_unused_themes, esc_attr($prop->get_stylesheet() . '-update'), esc_attr($prop->get_stylesheet()), $thisyear->get_column_count());
if ($old_from && $lastexception) {
if (!current_user_can('update_themes')) {
printf(
/* translators: 1: Theme name, 2: Details URL, 3: Additional link attributes, 4: Version number. */
__('There is a new version of %1$s available. View version %4$s details.'),
$prop['Name'],
esc_url($submenu_file),
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'), $prop['Name'], $wildcard['new_version']))
),
$wildcard['new_version']
);
} elseif (empty($wildcard['package'])) {
printf(
/* translators: 1: Theme name, 2: Details URL, 3: Additional link attributes, 4: Version number. */
__('There is a new version of %1$s available. View version %4$s details. Automatic update is unavailable for this theme.'),
$prop['Name'],
esc_url($submenu_file),
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'), $prop['Name'], $wildcard['new_version']))
),
$wildcard['new_version']
);
} else {
printf(
/* translators: 1: Theme name, 2: Details URL, 3: Additional link attributes, 4: Version number, 5: Update URL, 6: Additional link attributes. */
__('There is a new version of %1$s available. View version %4$s details or update now.'),
$prop['Name'],
esc_url($submenu_file),
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'), $prop['Name'], $wildcard['new_version']))
),
$wildcard['new_version'],
wp_nonce_url(self_admin_url('update.php?action=upgrade-theme&theme=') . $skipped_signature, 'upgrade-theme_' . $skipped_signature),
sprintf(
'class="update-link" aria-label="%s"',
/* translators: %s: Theme name. */
esc_attr(sprintf(_x('Update %s now', 'theme'), $prop['Name']))
)
);
}
} else if (!$old_from && !$lastexception) {
printf(
/* translators: %s: Theme name. */
__('There is a new version of %s available, but it does not work with your versions of WordPress and PHP.'),
$prop['Name']
);
if (current_user_can('update_core') && current_user_can('update_php')) {
printf(
/* translators: 1: URL to WordPress Updates screen, 2: URL to Update PHP page. */
' ' . __('Please update WordPress, and then learn more about updating PHP.'),
self_admin_url('update-core.php'),
esc_url(wp_get_update_php_url())
);
wp_update_php_annotation('
', '');
} elseif (current_user_can('update_core')) {
printf(
/* translators: %s: URL to WordPress Updates screen. */
' ' . __('Please update WordPress.'),
self_admin_url('update-core.php')
);
} elseif (current_user_can('update_php')) {
printf(
/* translators: %s: URL to Update PHP page. */
' ' . __('Learn more about updating PHP.'),
esc_url(wp_get_update_php_url())
);
wp_update_php_annotation('
', '');
}
} elseif (!$old_from) {
printf(
/* translators: %s: Theme name. */
__('There is a new version of %s available, but it does not work with your version of WordPress.'),
$prop['Name']
);
if (current_user_can('update_core')) {
printf(
/* translators: %s: URL to WordPress Updates screen. */
' ' . __('Please update WordPress.'),
self_admin_url('update-core.php')
);
}
} elseif (!$lastexception) {
printf(
/* translators: %s: Theme name. */
__('There is a new version of %s available, but it does not work with your version of PHP.'),
$prop['Name']
);
if (current_user_can('update_php')) {
printf(
/* translators: %s: URL to Update PHP page. */
' ' . __('Learn more about updating PHP.'),
esc_url(wp_get_update_php_url())
);
wp_update_php_annotation('
', '');
}
}
/**
* Fires at the end of the update message container in each
* row of the themes list table.
*
* The dynamic portion of the hook name, `$skipped_signature`, refers to
* the theme slug as found in the WordPress.org themes repository.
*
* @since 3.1.0
*
* @param WP_Theme $prop The WP_Theme object.
* @param array $wildcard {
* An array of metadata about the available theme update.
*
* @type string $new_version New theme version.
* @type string $preview_title Theme URL.
* @type string $package Theme update package URL.
* }
*/
do_action("in_theme_update_message-{$skipped_signature}", $prop, $wildcard);
// phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
echo '