it-swarm.com.de

Womit vergleicht is_page_template ()?

In der Wordpress-Dokumentation steht, dass is_page_template() mit einem "Vorlagennamen" verglichen wird, sofern einer angegeben ist.

Ich habe eine Vorlage mit dem Namen Homepage in page-homepage.php gespeichert:

/*
 * Template Name: Homepage
 * Description: The template for displaying the homepage
 */

Und ich habe Code, den ich in meiner functions.php ausführen möchte, wenn ich diese Vorlage verwende:

if (is_page_template('Homepage')) { 
   ...

Es wird jedoch nicht ausgelöst, wenn ich mich auf einer Seite befinde, die diese Vorlage verwendet.

Wenn ich mir den Code ansehe, den Wordpress für is_page_template() ausführt, sieht es so aus, als würde tatsächlich nach dem Dokumentnamen gesucht, nicht nach dem Vorlagennamen ...?

function is_page_template( $template = '' ) {

    $page_template = get_page_template_slug( get_queried_object_id() );

    if ( $template == $page_template )
        return true;

In meinem Fall scheint $page_templatepage-homepage.php zu sein - nicht der Name der Vorlage, wie in der Dokumentation vorgeschlagen ...?

Mache ich etwas falsch?

10

Ihre Bedingung sollte folgendermaßen lauten:

if (is_page_template('path/file.php')) { 
    // Do stuff
}

Ich glaube, die Verwirrung ist auf zwei Dinge zurückzuführen:

  1. Die Dokumente verweisen mehrdeutig auf "Name". Wenn Sie "Dateiname" angeben, wird die Dokumentation viel übersichtlicher.
  2. Der Code hinter is_page_template() zeigt die Funktion get_page_template_slug() im Kern. Diese Funktion gibt tatsächlich einen Dateinamen zurück, nicht den Template-Slug. https://codex.wordpress.org/Function_Reference/get_page_template_slug

Wenn Sie ein Argument für die Funktion is_page_template() angeben (wie im obigen Beispiel), ist der Dateipfad relativ zum Themenstamm.

Diese Funktion funktioniert nicht innerhalb der Schleife.

14
jdm2112

Ich denke, das Beste ist, es überprüft den Dateinamen und in Ihrem Fall wäre es page-homepage.php. so:

if (is_page_template('page-homepage.php')) { 
  ...

Sie sollten auch bedenken, ob die Vorlagendatei tatsächlich in einem anderen Ordner innerhalb des Designs gespeichert ist. Weiterlesen

Eine weitere Sache, der Template Name: Homepage ist im Allgemeinen das, was verwendet wird, um die Vorlage beim Erstellen einer Seite oder eines Posts zu identifizieren.

6
Malisa