如何将父主题的css文件出列?

时间:2012-09-18 作者:jmotes

我的父主题(Starkers)添加了一个我试图删除的CSS文件(我想改用@import,这样我可以更轻松地覆盖样式)。Starkers具有以下功能。php:

add_action( \'wp_enqueue_scripts\', \'script_enqueuer\' );

function script_enqueuer() {
    wp_register_script( \'site\', get_template_directory_uri().\'/js/site.js\', array( \'jquery\' ) );
    wp_enqueue_script( \'site\' );

    wp_register_style( \'screen\', get_template_directory_uri().\'/style.css\', \'\', \'\', \'screen\' );
    wp_enqueue_style( \'screen\' );
}
我在子函数中尝试了以下内容。php,但链接和脚本标记仍然显示在head部分。

add_action(\'init\', \'removeScripts\');
function removeScripts() {
    wp_dequeue_style(\'screen\');
    wp_deregister_script(\'site\');
}
我仔细检查了它们是否在父标题中硬编码,而不是。

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

我想改用@import,这样可以更轻松地覆盖样式

仅仅不要这样做。那个

您只需跳入同一个钩子,然后取消样式/脚本的注册/出列,并加入您的自定义样式/脚本。

function PREFIX_remove_scripts() {
    wp_dequeue_style( \'screen\' );
    wp_deregister_style( \'screen\' );

    wp_dequeue_script( \'site\' );
    wp_deregister_script( \'site\' );

    // Now register your styles and scripts here
}
add_action( \'wp_enqueue_scripts\', \'PREFIX_remove_scripts\', 20 );
退出和注销脚本的原因很简单:

请注意,如果您希望能够使用这些句柄中的任何一个(\'screen\'\'site\') 在他们退出队列后,您也需要注销他们。例如:wp_deregister_style( \'screen\' );wp_deregister_script( \'site\' ); - 彼得马格

SO网友:CHergott

下面是如何删除父主题的样式表并用子主题的样式表替换它,或者只是从加载时删除父主题的样式表。

Starker主题的功能。php:

add_action( \'wp_enqueue_scripts\', \'script_enqueuer\' );

function script_enqueuer() {
    //...
    wp_register_style( \'screen\', get_template_directory_uri().\'/style.css\', \'\', \'\', \'screen\' );
    wp_enqueue_style( \'screen\' );
}
记住他们称之为风格的手柄,\'screen\'

用子主题的样式表替换父主题,启动子主题的函数。php:

function​ ​custom_starkers_styles() {

    //Remove desired parent styles
    wp_dequeue_style( \'screen\');

    //Replace with custom child styles
    wp_register_style( \'screen-child\',​ ​trailingslashit( get_template_directory_uri() ). \'screen.css\' );
    wp_enqueue_style( \'screen-child​\'​);
}

add_action( \'wp_enqueue_scripts\',\'custom_starkers_styles\', 20 );
删除父主题的样式表,启动子主题的函数。php:

function​ ​remove_starkers_styles() {

    //Remove desired parent styles
    wp_dequeue_style( \'screen\');

}

add_action( \'wp_enqueue_scripts\',\'remove_starkers_styles\', 20 );
我们给子主题的add\\u action()优先级20(默认值为10),因为我们希望它在父主题排队后运行。优先级越高,运行时间越晚。20>10,因此子主题的操作将始终在父主题已经执行之后运行。

结束

相关推荐