如何使父主题的CSS文件出队?


33

我的父主题(Starkers)添加了一个我要删除的CSS文件(我想改用@import以便更轻松地覆盖样式)。Starkers在functions.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' );
}

我在子functions.php中尝试了以下操作,但是链接和脚本标签仍显示在头部。

add_action('init', 'removeScripts');
function removeScripts() {
    wp_dequeue_style('screen');
    wp_deregister_script('site');
}

我仔细检查了它们是否在父标头中进行了硬编码,而事实并非如此。

Answers:


39

我想改用@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' );- peterjmag


1
这也许很简单,但是缺少官方的WP文档,然后缺少codex.wordpress.org/Child_Themes。他们没有谈论出队和取消儿童主题的注册
gagarine

-1

这是删除父主题样式表并将其替换为子主题样式表的方法,或者仅删除父主题样式表的加载方式。

Starker主题的functions.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' );
}

记住他们称之为样式“屏幕”的手柄

用子主题的样式表替换父主题的

Starker-Child主题的functions.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 );

删除父主题的样式表

Starker-Child主题的functions.php:

function remove_starkers_styles() {

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

}

add_action( 'wp_enqueue_scripts','remove_starkers_styles', 20 );

我们将子主题的add_action()的优先级设置为20(默认值为10),因为我们希望它在父主题排队之后运行。优先级越高,它将运行得越晚。20> 10,因此子主题的操作将始终在父主题已执行之后运行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.