删除子主题中的自定义背景和页眉功能

时间:2011-02-16 作者:Atif

我正在创建一个以二十岁为基础的儿童主题。我正在寻找一种方法来删除添加自定义标题和背景的功能,而无需触摸functions.php 父主题中的文件。

运气不好:(

function my_child_theme_setup() {
    remove_theme_support(\'custom-background\');
    remove_theme_support(\'custom-header\');
}

add_action( \'after_setup_theme\', \'my_child_theme_setup\' );

5 个回复
最合适的回答,由SO网友:t31os 整理而成

标题和背景图像功能都设置了一些全局文件以便工作,取消设置这些全局文件似乎有一定的效果,至少可以将它们从管理端删除。

add_action(\'after_setup_theme\', \'remove_theme_features\', 11 );

function remove_theme_features() {
    $GLOBALS[\'custom_background\']   = \'kill_theme_features\';
    $GLOBALS[\'custom_image_header\'] = \'kill_theme_features\';
}
class kill_theme_features {
    function init() { return false; }
}
对于这两个特性,都需要提供一个类名作为回调,并且都需要给定的类具有init方法。解决方案是创建一个不做任何事情的虚拟类,并更新全局变量,这有效地消除了管理区域中的主题背景和标题页。

希望这有帮助。。

SO网友:Rarst

子主题在父主题之前处理。因此,您的函数会提前上钩并提前启动twentyten_setup().

尝试:

add_action( \'after_setup_theme\', \'my_child_theme_setup\', 11 );
或者,您可以复制twentyten_setup() 并修改,因为它是有条件声明为! function_exists( \'twentyten_setup\' )

SO网友:Cronco

remove_theme_support 应该做到这一点。

编辑-

似乎是自定义标题(&P);自定义背景对此有自己的功能:Custom Headers . 我假设相同类型的函数应该用于自定义背景,但我在参考中找不到它,在文件中搜索它。

编辑2-

这个remove_custom_image_header 根据codex,该功能仅在3.1中可用。我现在就提出拉斯特的建议。

SO网友:Bainternet

尝试:

function my_child_theme_setup() {
    global $_wp_theme_features;
    unset( $_wp_theme_features[\'custom-background\'] );
    unset( $_wp_theme_features[\'custom-header\'] );

}

add_action( \'after_setup_theme\', \'my_child_theme_setup\' );
希望这有帮助

SO网友:kaiser

通过对core的简短搜索,我无法验证remove_custom_image_header() *)。我只找到了add_custom_image_header() 使用add_theme_support(), 所以这应该行得通。

如果没有,您可以更接近核心并使用Theme Modifications API. 奇怪的是:API只有一个删除所有修改的函数:remove_theme_mods() 不需要其他参数。

仔细考虑后,您最好的机会是过滤它:add_filter( "theme_mod_$name", \'your_callback_fn\' );, 但我不完全确定它是否会从管理UI中删除它(有10%的可能性)。因此,您可能需要通过另一个函数取消设置菜单项。

无论如何:看看~/wp-includes/theme.php ... 这就是“二十点十”核心支持文件(我想其他主题不会使用它)。

这真的很奇怪

编辑:

remove_custom_image_header() 现在可用于WP 3.1+。

以及对@t310s答案的简短编辑:

function remove_theme_features() 
{
    $GLOBALS[\'custom_background\']   = \'__return_false\';
    $GLOBALS[\'custom_image_header\'] = \'__return_false\';
}
add_action( \'after_setup_theme\', \'remove_theme_features\', 20 );
它只是短了一点。

结束

相关推荐

获取在Functions.php中设置的变量,并在我的Custom Post模板中回显它们

在我的函数中设置了以下函数。php文件,以允许我的自定义帖子类型“Slideshow”工作。add_action( \'the_post\', \'paginate_slide\' ); function paginate_slide( $post ) { global $pages, $multipage, $numpages; if( is_single() && get_post_type() == \'lom_s