我的父主题(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');
}


我仔细检查了它们是否在父标头中进行了硬编码,但没有。

#1 楼


我想改用@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


#2 楼

您可以通过以下方法删除父主题的样式表,然后将其替换为子主题的样式表,或者仅删除父主题的样式表。

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主题的function.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,因此子主题的操作将始终在父主题已执行之后运行。