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.