--- a/wp/wp-admin/includes/theme.php Tue Dec 15 15:52:01 2020 +0100
+++ b/wp/wp-admin/includes/theme.php Wed Sep 21 18:19:35 2022 +0200
@@ -72,10 +72,29 @@
return new WP_Error( 'fs_no_themes_dir', __( 'Unable to locate WordPress theme directory.' ) );
}
+ /**
+ * Fires immediately before a theme deletion attempt.
+ *
+ * @since 5.8.0
+ *
+ * @param string $stylesheet Stylesheet of the theme to delete.
+ */
+ do_action( 'delete_theme', $stylesheet );
+
$themes_dir = trailingslashit( $themes_dir );
$theme_dir = trailingslashit( $themes_dir . $stylesheet );
$deleted = $wp_filesystem->delete( $theme_dir, true );
+ /**
+ * Fires immediately after a theme deletion attempt.
+ *
+ * @since 5.8.0
+ *
+ * @param string $stylesheet Stylesheet of the theme to delete.
+ * @param bool $deleted Whether the theme deletion was successful.
+ */
+ do_action( 'deleted_theme', $stylesheet, $deleted );
+
if ( ! $deleted ) {
return new WP_Error(
'could_not_remove_theme',
@@ -279,6 +298,7 @@
* @since 5.5.0 Added 'Block Editor Patterns', 'Block Editor Styles',
* and 'Full Site Editing' features.
* @since 5.5.0 Added 'Wide Blocks' layout option.
+ * @since 5.8.1 Added 'Template Editing' feature.
*
* @param bool $api Optional. Whether try to fetch tags from the WordPress.org API. Defaults to true.
* @return array Array of features keyed by category with translations keyed by slug.
@@ -315,6 +335,7 @@
'full-width-template' => __( 'Full Width Template' ),
'post-formats' => __( 'Post Formats' ),
'sticky-post' => __( 'Sticky Post' ),
+ 'template-editing' => __( 'Template Editing' ),
'theme-options' => __( 'Theme Options' ),
),
@@ -649,7 +670,7 @@
$updates = array();
$no_updates = array();
- if ( current_user_can( 'update_themes' ) ) {
+ if ( ! is_multisite() && current_user_can( 'update_themes' ) ) {
$updates_transient = get_site_transient( 'update_themes' );
if ( isset( $updates_transient->response ) ) {
$updates = $updates_transient->response;
@@ -716,9 +737,7 @@
);
}
- $type = 'theme';
- /** This filter is documented in wp-admin/includes/class-wp-automatic-updater.php */
- $auto_update_forced = apply_filters( "auto_update_{$type}", null, $auto_update_filter_payload );
+ $auto_update_forced = wp_is_auto_update_forced_for_item( 'theme', null, $auto_update_filter_payload );
$prepared_themes[ $slug ] = array(
'id' => $slug,
@@ -748,7 +767,7 @@
'actions' => array(
'activate' => current_user_can( 'switch_themes' ) ? wp_nonce_url( admin_url( 'themes.php?action=activate&stylesheet=' . $encoded_slug ), 'switch-theme_' . $slug ) : null,
'customize' => $customize_action,
- 'delete' => current_user_can( 'delete_themes' ) ? wp_nonce_url( admin_url( 'themes.php?action=delete&stylesheet=' . $encoded_slug ), 'delete-theme_' . $slug ) : null,
+ 'delete' => ( ! is_multisite() && current_user_can( 'delete_themes' ) ) ? wp_nonce_url( admin_url( 'themes.php?action=delete&stylesheet=' . $encoded_slug ), 'delete-theme_' . $slug ) : null,
'autoupdate' => wp_is_auto_update_enabled_for_type( 'theme' ) && ! is_multisite() && current_user_can( 'update_themes' )
? wp_nonce_url( admin_url( 'themes.php?action=' . $auto_update_action . '&stylesheet=' . $encoded_slug ), 'updates' )
: null,
@@ -1129,6 +1148,8 @@
* Renders an admin notice in case some themes have been paused due to errors.
*
* @since 5.2.0
+ *
+ * @global string $pagenow
*/
function paused_themes_notice() {
if ( 'themes.php' === $GLOBALS['pagenow'] ) {