From d6a37f904694305ce03a88f175d39d196b82d139 Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Fri, 7 May 2021 16:08:42 +0000 Subject: [PATCH] Themes: Introduce the `delete_theme` and `deleted_theme` action hooks. This change introduces the `delete_theme` and `deleted_theme` action hooks, which fire immediately before and after an attempt to delete a theme, respectively. Props scottconnerly, ptahdunbar, pbiron, vetyst, desrosj. Fixes #16401. git-svn-id: https://develop.svn.wordpress.org/trunk@50826 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/theme.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/wp-admin/includes/theme.php b/src/wp-admin/includes/theme.php index 224021ad37..bd47b37ce6 100644 --- a/src/wp-admin/includes/theme.php +++ b/src/wp-admin/includes/theme.php @@ -72,10 +72,29 @@ function delete_theme( $stylesheet, $redirect = '' ) { return new WP_Error( 'fs_no_themes_dir', __( 'Unable to locate WordPress theme directory.' ) ); } + /** + * Fires immediately before a theme deletion attempt. + * + * @since 5.8 + * + * @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 + * + * @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',