WordPress Titel mit TNG Titel überschreiben – Teil 2

In meinem früheren Artikel aus dem Mai 2014 hatte ich bereits beschrieben wie man den WordPress Titel mit dem TNG Titel überschreiben kann. Der entscheidene Trick war damals, den Funktionsaufruf wp_title(); in einer Bedingung abzufangen und auf den TNG-Seiten zu unterdrücken.

Neu in WordPress 4.1

Inzwischen hat sich WordPress allerdings weiterentwickelt. Mit dem Release 4.1 aus dem Dezember 2014 wurde der so genannte „Theme Support“ um eine neue Funktion für das Setzen des Seitentitels ergänzt. Das ist inzwischen auch schon wieder zwei Jahre her, und die überwiegende Mehrheit der WordPress-Themes macht Gebrauch von dieser Funktionalität.

Das bedeutet, dass in der header.php Datei nun kein expliziter Funktionsaufruf wp_title(); für den Seitentitel drin ist. Statt dessen wird der Seitentitel zusammen mit diversen anderen Metadaten über den Funktionsaufruf wp_head(); in die HTML-Seite eingebracht. Die im Mai vorgestellte Lösung funktioniert daher nicht mehr. Im nächsten Abschnitt erkläre ich euch eine andere Lösung für moderne WordPress-Themes.

Workaround für neue WordPress Themes

Um den WordPress-Titel zu unterdrücken muss ein so genanntes Child-Theme angelegt werden. Mittels diesem Child-Theme sind Änderungen am Theme möglich, ohne dieses komplett zu überschreiben oder eben diese Änderungen nach einem Update des Eltern-Themes zu verlieren.
In diesem Child-Theme wird der Theme Support für die Seitentitel entfernt, so dass wp_head(); die Metadaten ohne den Titel erstellt. Anschließend fügen wir den expliziten Aufruf von wp_title(); in die header.php Datei ein. Dieser Aufruf kann dann wie bereits 2014 beschrieben in eine !is_page() Bedingung gekapselt werden.

Anlegen des Child Themes

Für das Anlegen eines Child Themes gibt es diverse Plugins für WordPress. Alternativ lässt sich das Ganze auch händisch anlegen. Eine sehr gute Anleitung gibt es bei den Netzialisten. Daher gehe ich hier nicht weiter darauf ein.

Entfernen des Theme Supports für den Seitentitel

Die functions.php Datei des Eltern-Themes fügt die Unterstützung des Seitentitels ein. Das gleichnamige Skript im Child Theme wird nach dem Eltern-Theme geladen. An dieser Stelle kann die Funktion nun wieder entfernt werden, bevor WordPress die Webseite generiert. Das geschieht so:

// REMOVAL OF THEME SUPPORT FOR THE PAGE TITLE
add_action( 'after_setup_theme', 'child_after_setup_theme', 11 ); 
// Parent theme uses the default priority of 10, so
// use a priority of 11 to load after the parent theme.

function child_after_setup_theme()
{
    remove_theme_support('title-tag');
}

Wenn ihr jetzt die Seite aufruft werdet ihr sehen, dass im Brower nun statt des Titels nun die URL angezeigt wird.

Wiederherstellen des Seitentitels auf WordPress-Seiten

Im vorherigen Schritt haben wir nur die Unterstützung für die Seitentitel ausgebaut. Nun müssen wir die Funktion wiederherstellen durch eine weitere Modifikation.
Dazu müsst ihr die header.php Datei aus dem Eltern-Theme in den Child-Theme Ordner kopieren.
Anschließend müsst ihr die folgende Zeile in die Datei einbauen genau über dem Aufruf von wp_head();

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

Anschließend kann dieser Titel dann wie im anderen Beitrag beschrieben in einer if-Abfrage geändert werden.

Schreibe einen Kommentar