wp wymienia styl na określone szablony stron


24

Jestem w trakcie tworzenia motywu. Chciałbym dodać strony docelowe za pomocą szablonów stron. Nie mogę znaleźć nigdzie, który pokazuje, jak kolejkować styl lub js dla określonych szablonów stron. Jakieś sugestie. Dawny. Strona docelowa 1 - strona docelowa-szablon-one.php będzie wymagała zupełnie innego stylu i js niż blog lub strona główna.

Odpowiedzi:


29

Jeśli planujesz dużo rozwoju WP, dodaj tę stronę do zakładek: http://codex.wordpress.org/Conditional_Tags

Druga odpowiedź działa, ale warunek polega na tym, że strona ślimak (myurl.com/this-is-the-slug) nigdy się nie zmienia. Bardziej niezawodną metodą (IMO) i taką, która pasuje do tego przypadku, byłoby użycie is_page_template('example-template.php')zamiast tego sprawdzenia warunkowego.


23

Możesz używać is_page( 'landing-page-template-one' )warunkowych stylów / skryptów specyficznych dla strony jako części wszystkich instrukcji kolejkowania.

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

Możesz nawet powiązać więcej elseifz powyższymi dla innych stron itp.

Odniesienie: Odniesienia do funkcji -is_page()


Nie ma za co, Sean, chętnie pomogę.
Edward Caissie,

2
Myślę, że używanie is_page_template()jest lepsze, ponieważ informacje o stronie można łatwo zmienić. To rozwiązanie, choć działa dobrze, zepsułoby się, gdyby ślimak został zmieniony. Zobacz rozwiązanie kchjr, jeśli w przyszłości wystąpią problemy.
BODA82

Dziękuję Ci! Dla innych, którzy natknęli się na to: instrukcja warunkowa is_pagemusi znajdować się w funkcji dołączonej do akcji i nie może owijać add_actionsamej instrukcji. Jeśli umieścisz add_actioninstrukcję w warunku, będzie ona na wczesnym etapie przetwarzania strony, aby wiedzieć, która to strona.
Hendeca

2

Jeśli szablon strony znajduje się w podkatalogu motywu (od wersji WP 3.4), dodaj nazwę folderu i ukośnik do nazwy pliku szablonu, np .:

is_page_template( 'templates/about.php' );

Cała funkcja wygląda więc tak:

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

Odniesienie: oficjalne dokumenty


Dziękujemy za wspomnienie, że is_page_template ()kontrola powinna znajdować się wewnątrz funkcji kolejkowania, a nie wokół niej.
gregn3

1

Nie wiem, czy rozwiązania podane w innych odpowiedziach kiedyś działały, ale (ponieważ nie ma akceptowanej odpowiedzi!) Wydaje się, że poprawna odpowiedź to:

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 () działa tylko poza pętlą, zgodnie z https://developer.wordpress.org/reference/functions/is_page_template/ .


według wspomnianych dokumentów nie można go używać wewnątrz pętli
Selrond

poza pętlą. tak powiedziałem ... * rumieniec *
richplane

1

Powiedz, że nazwa twojego szablonu to temperament i chcesz załadować bootstrap na tej stronie, abyś mógł kolejkować styl na określonych szablonach strony, takich jak:

przejdź do pliku function.php , a następnie sprawdź warunek:

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');
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.