From 370f6a43b9077779bd722b6656761e0bfcd7412d Mon Sep 17 00:00:00 2001 From: nacin Date: Wed, 31 Mar 2010 09:06:11 +0000 Subject: [PATCH] Add blacklist to remove_theme_support(). fixes #12739. git-svn-id: http://svn.automattic.com/wordpress/trunk@13902 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- 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 b9365ac14..68a6b97c9 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; } /**