WP-Enqueue-Stil für bestimmte Seitenvorlagen

24

Ich bin gerade dabei, ein Thema zu erstellen. Ich möchte Landing Pages mithilfe von Seitenvorlagen hinzufügen. Ich kann nirgendwo etwas finden, das zeigt, wie man Styles oder Js für bestimmte Seitenvorlagen einreiht. Irgendwelche Vorschläge. Ex. Landing Page 1 - landing-page-template-one.php benötigt einen ganz anderen Style und js als der Blog oder die Homepage.

Sean
quelle

Antworten:

29

Wenn Sie viel WP-Entwicklung planen, sollten Sie diese Seite mit einem Lesezeichen versehen: http://codex.wordpress.org/Conditional_Tags

Die andere Antwort funktioniert, aber die Bedingung hängt davon ab, dass sich Ihre Seite (myurl.com/this-is-the-slug) niemals ändert. Eine zuverlässigere Methode (IMO) und eine, die in diesen Fall passt, wäre, is_page_template('example-template.php')stattdessen die bedingte Prüfung zu verwenden.

kchjr
quelle
22

Sie können die is_page( 'landing-page-template-one' )Bedingung für Ihre seitenbezogenen Stile / Skripte als Teil Ihrer allgemeinen Enqueue-Anweisungen verwenden.

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

Sie können elseifdas oben Gesagte auch für andere Seiten usw. verketten.

Referenz: Funktionsreferenz -is_page()

Edward Caissie
quelle
Gern geschehen Sean, wir helfen Ihnen gerne weiter.
Edward Caissie
2
Ich denke, die Verwendung is_page_template()ist vorzuziehen, da der Seitenblock leicht geändert werden kann. Diese Lösung funktioniert zwar einwandfrei, würde jedoch brechen, wenn der Butzen gewechselt würde. Sehen Sie sich die Lösung von kchjr an, wenn in Zukunft Probleme auftauchen.
BODA82
Vielen Dank! Für andere, die darauf gestoßen sind: Die bedingte Anweisung is_pagemuss sich in der Funktion befinden, die an die Aktion angehängt ist, und darf die add_actionAnweisung selbst nicht umschließen . Wenn Sie die add_actionAnweisung in eine Bedingung einschließen, ist es zu früh in der Verarbeitung der Seite, um zu wissen, um welche Seite es sich handelt.
Hendeca
2

Befindet sich die Seitenvorlage in einem Unterverzeichnis des Themas (seit WP 3.4), stellen Sie dem Dateinamen der Vorlage den Ordnernamen und einen Schrägstrich voran, z.

is_page_template( 'templates/about.php' );

Die ganze Funktion sieht also so aus:

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

Referenz: Offizielle Dokumentationen

Razon K.
quelle
Vielen Dank für die Erwähnung, dass sich der is_page_template ()Check innerhalb der Enqueue-Funktion befinden soll und nicht um diese herum.
gregn3
1

Ich weiß nicht, ob die in anderen Antworten angegebenen Lösungen funktionieren, aber (da es keine akzeptierte Antwort gibt!) Scheint die richtige Antwort derzeit zu sein:

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 () funktioniert laut https://developer.wordpress.org/reference/functions/is_page_template/ nur außerhalb der Schleife .

Richplane
quelle
Laut den genannten Dokumenten kann es nicht innerhalb der Schleife verwendet werden
Selrond
außerhalb der Schleife. das habe ich gesagt ... * erröten *
richplane
1

Angenommen, Ihr Vorlagenname ist temperamentvoll und Sie möchten Bootstrap auf dieser Seite laden, damit Sie den Stil für bestimmte Seitenvorlagen wie diese festlegen können:

Gehe in die function.php Datei und überprüfe den Zustand wie folgt:

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');
Touhid Imam
quelle