Wie lege ich den Seitentitel dynamisch fest?


19

Ist es möglich, den Seitentitel mit Code zu ändern?

Nehmen wir zum Beispiel an, die Seite heißt "Buchen Sie Ihre Bestellung", aber ich möchte sie in "Buchbestellung Nr. 123" ändern.

Ich googelte ein bisschen und schaute hier und sah nichts. Kennt jemand ein Plugin oder einen Hack?

wp_title gibt den Seitentitel zurück, erlaubt jedoch nicht das Festlegen des Seitentitels: http://codex.wordpress.org/Function_Reference/wp_title


Woher würde der Wert kommen? Was hat auf dieser Seite den Wert von # 123?
Sagive SEO

Antworten:


23

Es gibt keine Dokumentation, aber Sie können jederzeit einen Filter anwenden, der Ihnen the_titlegefällt:

add_filter('the_title','some_callback');
function some_callback($data){
    global $post;
    // where $data would be string(#) "current title"
    // Example:
    // (you would want to change $post->ID to however you are getting the book order #,
    // but you can see how it works this way with global $post;)
    return 'Book Order #' . $post->ID;
}

Siehe diese:

http://codex.wordpress.org/Function_Reference/the_title

http://codex.wordpress.org/Function_Reference/add_filter


Dies scheint alle Titel zu überschreiben. Wie kann ich nur den aktuellen Titel überschreiben?
Petrus Theron

Sie müssen dem Rückruf eine Bedingung hinzufügen, z. B.if ($post->ID == 45) { ... }
Nick Barrett

3
the_titleFilter funktioniert nicht mehr in den neuesten Versionen von Wordpress, verwenden document_title_partsoder filtern pre_get_document_titlewie in anderen Antworten beschrieben.
Brendan Nee

8

Ab Wordpress 4.4 können Sie document_title_partsden Titel mit dem Wordpress-Filter ändern.

Fügen Sie Folgendes hinzu zu functions.php:

add_filter('document_title_parts', 'my_custom_title');
function my_custom_title( $title ) {
  // $title is an array of title parts, including one called `title`

  $title['title'] = 'My new title';

  if (is_singular('post')) {
    $title['title'] = 'Fresh Post: ' . $title['title'];
  }

  return $title;
}

aber wo übergeben Sie den Parameter an einen Filter?
Tintinabulator Zea

Die obige Funktion ändert die Art the_title()und Weise und die get_the_title()Funktionsweise - es müssen also keine Parameter übergeben werden.
Brendan Nee

5

Für diejenigen, die das titleAttribut des Dokuments ändern möchten , stellte ich fest, dass die Verwendung des wp_titleFilters nicht mehr funktioniert. Verwenden Sie stattdessen den pre_get_document_titleFilter :

add_filter("pre_get_document_title", "my_callback");
function my_callback($old_title){
    return "My Modified Title";
}

Quelle


1
Vielen Dank, dass Sie Jahre später wiederkommen, um dieses Update zu veröffentlichen. Ich hatte wp_title jahrelang in einem Plugin von mir verwendet und bis jetzt nicht bemerkt, dass es nicht mehr funktioniert, und Ihre Antwort ersparte mir viel Mühe. Also vielen Dank!
MatthewLee

@MatthewLee Freut mich zu hören, dass es dir geholfen hat :)
Nathan ReinstateMonica Arthur

2

Dies hängt davon ab, ob Sie einen benutzerdefinierten Titel für die aktuelle Seite anzeigen möchten (dh den Inhalt des <title></title>Tags in der Kopfzeile) oder den Seitentitel im Seitenkörper oder in Auflistungen filtern möchten.

Versuchen Sie im ersten Fall (Titel der aktuellen Seite), einen Filter wp_title()wie folgt hinzuzufügen : folgt http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_title

Wenn Sie die Seitentitel allgemein ändern möchten, reicht die Filterung aus the_title(): http://codex.wordpress.org/Plugin_API/Filter_Reference/the_title


Eigentlich muss man meiner Erfahrung nach beides filtern wp_titleund the_titlebeides abdecken.
Geoffrey

Ich bin nicht sicher, ob es an der Abwertung liegt, aber es funktioniert nicht für mich. Ich habe Kombinationen ausprobiert und Inline - Filter und die neuen apply_filters ( ‚pre_get_document_title‘, string $ title)
gelandet

Leider hat auch keiner für mich gearbeitet.
Debbie Kurth

Diese Antwort ist fast 6 Jahre alt; Als Poster (und als jemand, der nicht mehr aktiv mit WP arbeitet) empfehle ich stattdessen die neueste Dokumentation.
NickB

1

Wenn Sie Yoast aktiviert haben, müssen Sie den Titel wie folgt überschreiben:

add_filter('wpseo_title', 'custom_titles', 10, 1);
function custom_titles() {

  global $wp;
  $current_slug = $wp->request;

  if ($current_slug == 'foobar') {

    return 'Foobar';
  }
}

-1

Sie möchten also den Titel pro Seite ändern? Zuerst ein benutzerdefiniertes Posting einrichten und eine Box treffen. Smashing Magazine hat kürzlich darüber berichtet: http://wp.smashingmagazine.com/2011/10/04/create-custom-post-meta-boxes-wordpress/ . Sie können dann eine einfache Funktion erstellen, um den Titel zu ersetzen, wenn das benutzerdefinierte Meta-Feld einen Wert enthält.

Es gibt mehrere SEO-Plugins, die diese Funktionalität ebenfalls bereitstellen. Probieren Sie Yoast SEO zum Beispiel aus: http://wordpress.org/extend/plugins/wordpress-seo/

Hoffe das hilft.


1
Diese Lösungen ändern den Titel nicht "dynamisch", sondern "manuell".
Gustavo

1
Die schlechteste Lösung aller Zeiten
Vishal Kumar Sahu
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.