Come posso dequeue il file CSS di un tema principale?


33

Il mio tema genitore (Starkers) aggiunge un file CSS che sto cercando di rimuovere (voglio invece usare @import in modo da poter sostituire più facilmente gli stili). Starkers ha le seguenti funzioni.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' );
}

Ho provato quanto segue nella funzione figlio.php, ma i tag di link e script vengono comunque visualizzati nella sezione head.

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

Ho ricontrollato per vedere se sono codificati nell'intestazione del genitore e non lo sono.

Risposte:


39

Voglio usare @import invece in modo da poter sostituire più facilmente gli stili

Semplicemente. Non farlo. Fare. Quella.

Basta saltare nello stesso hook e quindi annullare la registrazione / dequeue gli stili / script e inserirli in quelli personalizzati.

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

Il motivo per la rimozione della coda e la cancellazione della registrazione degli script è semplice:

Nota che se desideri essere in grado di utilizzare una di quelle maniglie ( 'screen'o 'site') dopo averle rimosse la coda, dovrai annullare la registrazione. Ad esempio: wp_deregister_style( 'screen' );e wp_deregister_script( 'site' );- peterjmag


1
È forse semplice ma manca il documento WP ufficiale allora codex.wordpress.org/Child_Themes . Non parlano di dequeue e cancellazioni per temi per bambini
gagarine,

-1

Ecco come rimuovere il foglio di stile del tema genitore e sostituirlo con il foglio di stile di un tema figlio O semplicemente rimuovere il foglio di stile del genitore dal caricamento.

Funzioni del tema 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' );
}

Ricorda la maniglia che chiamano stile, "schermo"

Sostituzione del tema principale con il foglio di stile del tema secondario

Funzioni del tema Starker-Child.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 );

Rimuovi il foglio di stile del tema principale

Funzioni del tema Starker-Child.php:

function remove_starkers_styles() {

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

}

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

Diamo al tema secondario add_action () una priorità di 20 (il valore predefinito è 10) perché vogliamo che venga eseguito DOPO che il tema principale lo ha messo in coda. Maggiore è la priorità, più tardi verrà eseguita. 20> 10, quindi l'azione del tema figlio verrà sempre eseguita dopo che il tema principale è già stato eseguito.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.