Wie kann ich add_filter für eine bestimmte Seitenvorlage verwenden?

Lesezeit: 3 Minuten

Benutzer-Avatar
Stefan

In WordPress habe ich eine Seitenvorlage namens designers.php.

Beim Laden liest es die slug um eine eindeutige ID zu erhalten, ruft dann die DB auf, um Designerinformationen abzurufen.
Ich möchte diese Informationen verwenden, um den Seitentitel zu ändern, indem ich den Namen des Designers im Titel-Tag verwende.

Ich habe versucht, die zu verwenden add_filter in meinem designers.php Datei, aber es funktioniert nicht:

add_filter('wp_title', 'set_page_title');

function set_page_title($title) { 
  global $brand;
  return 'Designer '.$brand['name'].' - '.get_bloginfo('name');  
}    

Ich vermute das add_filter muss sich entweder innerhalb eines Plugins oder in befinden functions.php Datei.

Wie kann ich erreichen, was ich versuche?

AKTUALISIEREN

Die Funktion wird nie ausgelöst solange ich sie benutze wp_title. Wenn ich es ändere init (zum Testen) wird die Funktion ausgelöst.

Warum also tut die add_filternoch arbeiten für wp_title?

  • Welche WordPress-Version verwendest du?

    – Ketch

    13. Februar 2011 um 22:36 Uhr

Benutzer-Avatar
ketch

Du hast fast recht. Der Filter muss sich in function.php befinden und wird aufgerufen, um den Titel zu ändern. Sie können den Filter bedingt hinzufügen. Verwenden Sie diese Funktion is_page_template() um festzustellen, ob WordPress Ihre Vorlage rendert

Versuchen Sie, Ihre Funktion wie folgt zu ändern:

add_filter('wp_title', 'set_page_title');

function set_page_title($title) { 
  global $brand;
  if (is_page_template('designer.php')) 
     return 'Designer '.$brand['name'].' - '.get_bloginfo('name');   
  else
     return $title;
}

  • @keatch – Das funktioniert nicht. Ich habe die Funktion und die platziert add_filter in functions.php, aber die Funktion wird nicht aufgerufen. Testen mit echo 'TEST'; vor dem IF.

    – Stefan

    13. Februar 2011 um 17:42 Uhr

  • In meiner Installation funktioniert dieser Codeabschnitt einwandfrei! Hatten Sie andere Plugins, die Ihren Titel ändern könnten, wie z. B. SEO-Plugins, nachdem Ihre Funktion aufgerufen wurde? Um zu testen, ob Ihre Funktion aufgerufen wird, versuchen Sie Folgendes: gist.github.com/717a938919cf16c5854d. Schauen Sie sich Ihren Quellcode auf Ihrer Seite an!

    – Ketch

    13. Februar 2011 um 19:58 Uhr


  • @keatch – Soweit ich weiß, habe ich keine anderen Plugins, die den Titel ändern. Kein SEO-Plugin. Getestet Ihren Code im Kern, keine Ausgabe (auch im Quellcode) 🙁

    – Stefan

    13. Februar 2011 um 21:38 Uhr

  • @keatch – Wenn ich mich ändere wp_title zu initEs klappt . $wp_query ausgegeben wird.

    – Stefan

    13. Februar 2011 um 21:45 Uhr

  • Der Grund, warum das nicht funktioniert, liegt darin, dass die Bedingungen is_page() und is_page_template() innerhalb der Schleife nicht funktionieren. Sie können sie nach der Schleife verwenden, wenn Sie wp_reset_query() ausführen. Es ist ein frustrierendes Detail, das unzureichend dokumentiert ist.

    – emersonthis

    7. März 2012 um 22:23 Uhr

Zuerst add_filter muss sich entweder innerhalb eines Plugins oder in befinden functions.php Datei.

Dann müssen Sie vielleicht die Priorität für den Filter festlegen:

add_filter('wp_title', 'set_page_title',1);

function set_page_title() { 
  global $brand;
  return 'Designer '.$brand['name'].' - '.get_bloginfo('name');  
}

Und überprüfe die <title> meta in deinem header.php Thema.

<title><?php wp_title(); ?></title>

1351450cookie-checkWie kann ich add_filter für eine bestimmte Seitenvorlage verwenden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy