Come rimuovere il file CSS del tema padre?

18 set 2012, 19:20:08
Visualizzazioni: 46.4K
Voti: 40

Il mio tema padre (Starkers) aggiunge un file CSS che sto cercando di rimuovere (voglio usare @import invece per poter sovrascrivere gli stili più facilmente). Starkers ha il seguente codice nel suo 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' );
}

Ho provato il seguente codice nel functions.php del tema figlio, ma i tag link e script continuano ad apparire nella sezione head.

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

Ho controllato due volte per vedere se sono codificati direttamente nell'header del tema padre e non lo sono.

0
Tutte le risposte alla domanda 2
0
48

Voglio usare @import così posso sovrascrivere gli stili più facilmente

Semplicemente. Non. Farlo.

Puoi semplicemente agganciarti allo stesso hook e poi deregistrare/rimuovere gli stili/script e inserire i tuoi personalizzati.

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

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

    // Ora registra qui i tuoi stili e script
}
add_action( 'wp_enqueue_scripts', 'PREFIX_remove_scripts', 20 );

Il motivo per rimuovere e deregistrare gli script è semplice:

Nota che se vuoi poter usare uno di quei handle ('screen' o 'site') dopo averli rimossi, dovrai anche deregistrarli. Ad esempio: wp_deregister_style( 'screen' ); e wp_deregister_script( 'site' ); - peterjmag

18 set 2012 19:37:23
0

Ecco come puoi rimuovere il foglio di stile del tema genitore e sostituirlo con quello del tema figlio OPPURE semplicemente rimuovere il foglio di stile del genitore in modo che non venga mai caricato.

functions.php del tema Starker:

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 l'handle che usano per lo stile, 'screen'

Sostituire il foglio di stile del tema genitore con quello del tema figlio

functions.php del tema Starker-Child:

function​ ​custom_starkers_styles() {

    //Rimuovi gli stili desiderati del genitore
    wp_dequeue_style( 'screen');

    //Sostituisci con gli stili personalizzati del figlio
    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 );

Rimuovere il foglio di stile del tema genitore

functions.php del tema Starker-Child:

function​ ​remove_starkers_styles() {

    //Rimuovi gli stili desiderati del genitore
    wp_dequeue_style( 'screen');

}

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

Assegniamo una priorità di 20 (il default è 10) all'add_action() del tema figlio perché vogliamo che venga eseguito DOPO che il tema genitore lo ha accodato. Più alta è la priorità, più tardi verrà eseguita. 20 > 10 quindi l'azione del tema figlio verrà sempre eseguita dopo che il tema genitore ha già completato la sua esecuzione.

7 mar 2016 23:52:56