wp enqueue style su specifici template di pagina
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.
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')
.

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

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.

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.

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

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/.

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

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

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

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
