wp accodare lo stile su specifici modelli di pagina


24

Sto elaborando un tema, vorrei aggiungere pagine di destinazione utilizzando i modelli di pagina. Non riesco a trovare da nessuna parte che mostra come accodare lo stile o js per modelli di pagina specifici. Eventuali suggerimenti. Ex. Pagina di destinazione 1 - landing-page-template-one.php avrà bisogno di stili e js molto diversi rispetto al blog o alla homepage.

Risposte:


29

Se prevedi di sviluppare molto WP, aggiungi questa pagina ai segnalibri: http://codex.wordpress.org/Conditional_Tags

L'altra risposta funziona, ma il condizionale si basa sulla tua lumaca di pagina (myurl.com/this-is-the-slug) che non cambia mai. Un metodo più affidabile (IMO), che si adatta a questo caso, sarebbe invece utilizzare il is_page_template('example-template.php')controllo condizionale.


22

È possibile utilizzare il is_page( 'landing-page-template-one' )condizionale intorno agli stili / script specifici della pagina come parte delle istruzioni di accodamento generali.

function my_enqueue_stuff() {
  if ( is_page( 'landing-page-template-one' ) ) {
    /** Call landing-page-template-one enqueue */
  } else {
    /** Call regular enqueue */
  }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

Potresti anche concatenare di più elseifsu quanto sopra per altre pagine, ecc.

Riferimento: Riferimento funzioni -is_page()


Di niente Sean, felice di aiutarti.
Edward Caissie,

2
Penso che is_page_template()sia preferibile usare poiché la lumaca di pagina è facilmente cambiata. Questa soluzione, sebbene funzioni bene, si spezzerebbe se la lumaca fosse cambiata. Vedi la soluzione di kchjr se qualcuno incontrerà problemi in futuro.
BODA82,

Grazie! Per gli altri che si sono imbattuti in questo: l'affermazione condizionale is_pagedeve essere nella funzione allegata all'azione e non racchiudere la add_actiondichiarazione stessa. Se avvolgi l' add_actionistruzione in un condizionale, sarà presto all'inizio dell'elaborazione della pagina per sapere di quale pagina si tratta.
Hendeca,

2

Se il modello di pagina si trova in una sottodirectory del tema (dal WP 3.4), anteporre il nome della cartella e una barra al nome del modello, ad esempio:

is_page_template( 'templates/about.php' );

Quindi, l'intera funzione è simile a:

function my_enqueue_stuff() {
  if ( is_page_template( 'landing-page-template-one' ) ) {
    /** Call landing-page-template-one enqueue */
  } else {
    /** Call regular enqueue */
  }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

Riferimento: documentazione ufficiale


Grazie per aver menzionato che il is_page_template ()segno di spunta dovrebbe essere all'interno della funzione accodamento e non attorno ad esso.
gregn3

1

Non so se le soluzioni fornite in altre risposte funzionavano, ma (poiché non esiste una risposta accettata!) Sembra che la risposta corretta sia attualmente:

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 ciclo, secondo https://developer.wordpress.org/reference/functions/is_page_template/ .


secondo i documenti citati, non può essere utilizzato all'interno del ciclo
Selrond

fuori dal giro. è quello che ho detto ... * arrossire *
richplane il

1

Supponi che il nome del tuo modello sia temperato e desideri caricare bootstrap su quella pagina in modo da poter accodare lo stile su modelli di pagina specifici come questo:

vai al file function.php quindi controlla le condizioni 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');
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.