How do I dequeue a parent theme’s CSS file?

My parent theme (Starkers) adds a CSS file that I’m trying to remove (I want to use @import instead so I can override styles more easily). Starkers has the following in its 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' );
}

I’ve tried the following in the child functions.php, but the link and script tags still show up in the head section.

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

I’ve double checked to see if they are hard coded in the parent header and they are not.

2

I want to use @import instead so I can override styles more easily

Simply. Don’t. Do. That.

You simply jump into the same hook and then deregister/dequeue the styles/scripts and throw in your custom ones.

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 );

The reason for dequeue-ing and deregistering the scripts is simple:

Note that if you’d like to be able to use either of those handles ('screen' or 'site') after dequeuing them, you’ll need to deregister them too. For instance: wp_deregister_style( 'screen' ); and wp_deregister_script( 'site' );peterjmag

Leave a Comment