wp enqueue style su specifici template di pagina

8 ago 2012, 22:20:46
Visualizzazioni: 74.9K
Voti: 37

Sto sviluppando un tema e vorrei aggiungere landing page utilizzando i template di pagina. Non riesco a trovare da nessuna parte come accodare (enqueue) stili o js per specifici template di pagina. Qualche suggerimento? Es. Landing Page 1 - landing-page-template-one.php avrà bisogno di stili e js molto diversi rispetto al blog o alla homepage.

0
Tutte le risposte alla domanda 8
0
40

Se prevedi di fare molto sviluppo su WordPress, dovresti aggiungere questa pagina ai preferiti: http://codex.wordpress.org/Conditional_Tags

L'altra risposta funziona, ma il condizionale si basa sul fatto che lo slug della tua pagina (myurl.com/questo-e-lo-slug) non cambi mai. Un metodo più affidabile (a mio avviso), e che si adatta a questo caso, sarebbe usare invece il controllo condizionale is_page_template('example-template.php').

9 ago 2012 00:01:09
3
30

Puoi utilizzare il condizionale is_page( 'landing-page-template-one' ) attorno ai tuoi stili/script specifici per la pagina come parte delle tue dichiarazioni complessive di enqueue.

function my_enqueue_stuff() {
  if ( is_page( 'landing-page-template-one' ) ) {
    /** Chiama l'enqueue per landing-page-template-one */
  } else {
    /** Chiama l'enqueue regolare */
  }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

Potresti anche concatenare ulteriori elseif nel codice sopra per altre pagine, ecc.

Riferimento: Riferimento Funzioni - is_page()

8 ago 2012 22:34:39
Commenti

Prego Sean, felice di esserti stato utile.

Edward Caissie Edward Caissie
15 ago 2012 22:27:16

Penso che usare is_page_template() sia preferibile poiché lo slug della pagina può essere facilmente modificato. Questa soluzione, sebbene funzioni bene, si interromperebbe se lo slug venisse cambiato. Guardate la soluzione di kchjr se qualcuno dovesse avere problemi in futuro.

BODA82 BODA82
15 nov 2015 00:46:53

Grazie! Per altri che si imbattono in questo: l'istruzione condizionale is_page deve essere nella funzione collegata all'azione e non deve avvolgere la dichiarazione add_action stessa. Se avvolgete la dichiarazione add_action in una condizione, sarà troppo presto nell'elaborazione della pagina per sapere di quale pagina si tratta.

Hendeca Hendeca
25 mag 2016 06:32:18
1

Se il template della pagina si trova in una sottocartella del tema (a partire da WP 3.4), anteponi il nome della cartella e uno slash al nome del file del template, ad esempio:

is_page_template( 'templates/about.php' );

Quindi, la funzione completa appare così:

function my_enqueue_stuff() {
  if ( is_page_template( 'landing-page-template-one' ) ) {
    /** Chiama l'enqueue per landing-page-template-one */
  } else {
    /** Chiama l'enqueue regolare */
  }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

Riferimento: Documentazione Ufficiale

21 ott 2018 07:58:20
Commenti

Grazie per aver menzionato che il controllo is_page_template () dovrebbe essere all'interno della funzione enqueue, e non intorno ad essa.

gregn3 gregn3
1 lug 2019 21:48:16
2

Non so se le soluzioni fornite in altre risposte funzionassero in passato, ma (dato che non c'è una risposta accettata!) sembra che la risposta corretta attualmente sia:

function my_enqueue_stuff() {
    if ( get_page_template_slug() == 'landing-page-template-one.php' ) {
        wp_enqueue_script('my-script-handle', 'script-path.js', ... );
    }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

is_page_template() funziona solo al di fuori del loop, secondo https://developer.wordpress.org/reference/functions/is_page_template/.

22 dic 2016 15:08:15
Commenti

secondo la documentazione menzionata, non può essere utilizzato all'interno del loop

Selrond Selrond
20 feb 2017 15:02:03

fuori dal loop. è quello che ho detto... arrossisce

richplane richplane
21 feb 2017 15:58:56
0

Supponiamo che il nome del tuo template sia temper e vuoi caricare bootstrap su quella pagina, puoi accodare lo stile su template di pagina specifici in questo modo:

Vai al file function.php e verifica la condizione in questo modo:

function temper_scripts() {

    if(basename(get_page_template()) == 'temper.php'){

       wp_enqueue_style('bootstrap', '//stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css');

    }

}

add_action('wp_enqueue_scripts', 'temper_scripts');
22 mag 2019 13:40:13
0

Questo funziona perfettamente.

      function my_enqueue_stuff() {

 // "page-templates/about.php" è il percorso del file del template. Se il tuo file template si trova nella cartella principale del Tema, allora usalo come "about.php".

        if(is_page_template( 'page-templates/about.php' ))
        {
            wp_enqueue_script( 'lightgallery-js', get_template_directory_uri() . '/js/lightgallery-all.min.js');
            wp_enqueue_script('raventours-picturefill', "https://cdn.jsdelivr.net/picturefill/2.3.1/picturefill.min.js", true, null);
        }
        }
        add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );
14 feb 2020 08:05:22
0

Prova questo

 if(is_page_template(array( 'custom-template/about.php') )) 
    {            
        wp_enqueue_style('about-css', get_template_directory_uri() . '/assets/css/about.css', array(), time(), 'all');
    } 
26 apr 2022 08:27:10
0
function enqueue_my_script() {
    if ( is_page_template( 'my-page-template.php' ) ) {
        wp_enqueue_script( 'my-script', get_template_directory_uri() . '/js/my-script.js', array( 'jquery' ), '1.0', true );
    }
}
add_action( 'wp_enqueue_scripts', 'enqueue_my_script' );

In questo esempio, la funzione enqueue_my_script è collegata all'azione wp_enqueue_scripts, che viene chiamata da WordPress durante il caricamento degli script e dei fogli di stile.

La funzione utilizza is_page_template per verificare se la pagina corrente utilizza un template specifico (in questo caso, 'my-page-template.php'). Se la condizione è vera, viene chiamata la funzione wp_enqueue_script per accodare lo script 'my-script'.

La funzione wp_enqueue_script accetta i seguenti argomenti:

'my-script': Questo è l'handle o identificatore dello script. Deve essere univoco e viene utilizzato per riferirsi allo script quando viene registrato.

get_template_directory_uri() . '/js/my-script.js': Questo è l'URL del file JavaScript.

array( 'jquery' ): Specifica che lo script dipende dallo script jquery, il che significa che deve essere caricato dopo lo script jquery.

'1.0': Questo è il numero di versione dello script.

true: Specifica che lo script deve essere caricato nel footer del documento HTML.

Puoi utilizzare altri tag condizionali come is_home, is_front_page, is_single e


8 gen 2023 09:08:05