From 47d995c72adf09eda073b37969491f93b1469a5a Mon Sep 17 00:00:00 2001 From: Andrew Nacin Date: Wed, 31 Mar 2010 09:06:11 +0000 Subject: [PATCH] Add blacklist to remove_theme_support(). fixes #12739. git-svn-id: https://develop.svn.wordpress.org/trunk@13902 602fd350-edb4-49c9-b593-d223f7449a82 --- wp-includes/theme.php | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/wp-includes/theme.php b/wp-includes/theme.php index b9365ac14b..68a6b97c92 100644 --- a/wp-includes/theme.php +++ b/wp-includes/theme.php @@ -1531,7 +1531,9 @@ function add_editor_style( $stylesheet = 'editor-style.css' ) { /** * Allows a theme to register its support of a certain feature * - * Must be called in the themes functions.php file to work. + * Must be called in the theme's functions.php file to work. + * If attached to a hook, it must be after_setup_theme. + * The init hook may be too late for some features. * * @since 2.9.0 * @param string $feature the feature being added @@ -1548,15 +1550,25 @@ function add_theme_support( $feature ) { /** * Allows a theme to de-register its support of a certain feature * - * Must be called in the themes functions.php file to work. + * Should be called in the theme's functions.php file. Generally would + * be used for child themes to override support from the parent theme. * * @since 3.0.0 + * @see add_theme_support() * @param string $feature the feature being added + * @return bool Whether feature was removed. */ function remove_theme_support( $feature ) { + // Blacklist: for internal registrations not used directly by themes. + if ( in_array( $feature, array( 'custom-background', 'custom-header', 'editor-style', 'widgets' ) ) ) + return false; + global $_wp_theme_features; - unset($_wp_theme_features[$feature]); + if ( ! isset( $_wp_theme_features[$feature] ) ) + return false; + unset( $_wp_theme_features[$feature] ); + return true; } /**