Come rimuovere tutti gli stili per un determinato template di pagina?

10 ott 2015, 04:50:42
Visualizzazioni: 17.9K
Voti: 5

So come creare child theme e template di pagina. Ho un child theme di Salient chiamato Salient-Child, e ho un template di pagina chiamato blankPage.php.

Per tutte le pagine che utilizzano questo template, voglio che non venga caricato alcun CSS.

Conosco le funzioni wp_register_script, wp_deregister_script, wp_deregister_style, wp_dequeue_style, ecc., ma non sono sicuro di dove/come usarle.

Ho provato a inserire alcune di queste funzioni direttamente in blankPage.php stesso, e ho anche provato a modificare functions.php. Ho provato a usare un condizionale con if(is_page_template('blankPage.php')){...}.

Ogni suggerimento sarebbe apprezzato.

Grazie!

0
Tutte le risposte alla domanda 2
2
13

Puoi rimuovere stili specifici e script JavaScript per un template di pagina specifico come mostrato di seguito. Aggiungi il codice nel file functions.php del tuo tema corrente. Per vedere la lista di tutti i JS e CSS potresti voler usare un plugin come questo: https://wordpress.org/plugins/debug-bar-list-dependencies/

/**
 * Rimuove script JavaScript specifici.
 */
function se_remove_script() {
    if ( is_page_template( 'blankPage.php' ) ) {
        wp_dequeue_script( 'some-js' );
        wp_dequeue_script( 'some-other-js' );
    }
}

add_action( 'wp_print_scripts', 'se_remove_script', 99 );

/**
 * Rimuove fogli di stile specifici.
 */
function se_remove_styles() {
    if ( is_page_template( 'blankPage.php' ) ) {
        wp_dequeue_style( 'some-style' );
        wp_dequeue_style( 'some-other-style' );
    }
}

add_action( 'wp_print_styles', 'se_remove_styles', 99 );

Puoi rimuovere tutti gli stili e gli script JavaScript in una sola volta per un template di pagina specifico come mostrato di seguito. Aggiungi il codice nel file functions.php del tuo tema corrente.

/**
 * Rimuove tutti gli script JavaScript.
 */
function se_remove_all_scripts() {
    global $wp_scripts;
    if ( is_page_template( 'blankPage.php' ) ) {
        $wp_scripts->queue = array();
    }
}

add_action( 'wp_print_scripts', 'se_remove_all_scripts', 99 );

/**
 * Rimuove tutti i fogli di stile.
 */
function se_remove_all_styles() {
    global $wp_styles;
    if ( is_page_template( 'blankPage.php' ) ) {
        $wp_styles->queue = array();
    }
}

add_action( 'wp_print_styles', 'se_remove_all_styles', 99 );
10 ott 2015 05:33:17
Commenti

Il tuo codice se_remove_all_styles sembra essere sulla strada giusta per quello che voglio ottenere, ma quando l'ho provato, ha rimosso tutti gli stili da TUTTE le pagine, indipendentemente dal template. Non capisco perché, dato che c'è un'istruzione "If". Hai qualche idea su come debugare il motivo per cui questo accade nel mio caso? Grazie!

Ryan Ryan
12 ott 2015 01:40:59

Stai fornendo il percorso corretto per il file del template all'interno del controllo if?

Subharanjan Subharanjan
12 ott 2015 04:53:19
0

Sembra che abbia risolto il problema, ed era così semplice che sono scioccato dal fatto che nessuno lo abbia mai menzionato prima.

Per prima cosa, ho eliminato completamente il mio child theme per poter ricominciare da zero.

Poi, ho utilizzato https://wordpress.org/plugins/one-click-child-theme/ per creare un nuovo child theme di Salient.

Quindi, nel menu Aspetto > Editor, ho visualizzato il file functions.php e ho notato che aveva già generato automaticamente add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' ); e function theme_enqueue_styles().

Così ho semplicemente racchiuso il contenuto della funzione all'interno di if ( !is_page_template( 'rawHtmlPage.php' ) ) { ...}.

12 ott 2015 02:11:34