Jede WordPress-Seite kann mit zwei Titeln beschrieben werden:
Der Titel der Seite/des Beitrags, der innerhalb der Seite/des Beitrags über den Funktionsaufruf the_title()
angezeigt wird
Das HTML-Tag <title></title>
, das den Titel oben im Browser anzeigt
Ich schreibe ein Plugin, das an einer Stelle den Titel einer Seite dynamisch ändern sollte (nun, es sollte beide oben beschriebenen Titel ändern).
Für Schritt 1 oben habe ich mehrere Lösungen für den Stapelüberlauf gefunden (z. B. this oder this ). Diese eignen sich nur für Schritt 1 oben.
Für Schritt 2 habe ich diese Lösung gefunden; Kurz gesagt, so funktioniert es:
add_filter('wp_title', 'change_page_title');
function change_page_title ($title) {
// Do some magic, and eventually modify $title then return it
return $title;
}
Aber die vorgeschlagene Lösung funktioniert bei mir nicht. und mit nicht funktioniert meine ich, dass der Filter die zugehörige Funktion nicht aufruft. Ich bin mir nicht sicher, wo das Problem liegt. liegt es daran, dass dieser filter aus dem plugin heraus aufgerufen wird und nicht das theme? (Nur zu Ihrer Information, ich habe keinen Zugriff auf die Themendateien, daher muss dies über das Plugin erfolgen.).
Wie kann ich das erreichen? Wie kann ich den Browsertitel einer Seite innerhalb eines Plugins dynamisch ändern?
Vielen Dank.
Ein Beitrag oder eine Seite hat nur einen Titel, der Titel <title>
ist der Dokumenttitel.
Der Filter wp_title
filtert die Ausgabe der Funktion wp_title()
, mit der zuvor der Titel des Dokuments ausgegeben wurde. In WordPress 4.1 wurde die Unterstützung von Title-Tags in Themes eingeführt und wp_get_document_title()
wird anstelle von wp_title()
verwendet. Wenn Ihr Design also title-tag
unterstützt, hat der wp_title
-Filter keine Auswirkung, Sie können jedoch einen anderen Filter verwenden:
pre_get_document_title
, um einen neuen Titel festzulegen
add_filter( 'pre_get_document_title', 'cyb_change_page_title' );
function cyb_change_page_title () {
return "Custom title";
}
document_title_separator
um das Titeltrennzeichen zu filtern
add_filter('document_title_separator', 'cyb_change_document_title_separator');
function cyb_change_document_title_separator ( $sep ) {
return "|";
}
documente_title_parts
zum Filtern verschiedener Teile des Titels: Titel, Seitennummer, Slogan und Site-Name.
add_filter( 'document_title_parts', 'cyb_change_document_title_parts' );
function cyb_change_document_title_parts ( $title_parts ) {
$title_parts['title'] = 'Custom title';
$title_parts['page'] = 54;
$title_parts['tagline'] = "Custom tagline";
$title_parts['site'] = "My Site"; // When not on home page
return $title_parts;
}
PD: Sie können mit current_theme_supports( 'title-tag' )
prüfen, ob das Theme title-tag
unterstützt oder nicht.
Verwenden Sie diesen Code auf Ihrer page.php oder Seite, die Sie ändern möchten <pre> <title><?php wp_title(); ?> | <?php bloginfo(‘name’); ?></title> </pre>