Kategoriebild Programieren

Wie man den WordPress-Titel überschreibt mit dem TNG-Titel

Dies ist ein schneller Tipp, um WordPress und TNG weiter zu integrieren. Es gehört zum Standard von beinahe jedem WordPress-Theme, den Titel einer Seite, einer Kategorie oder eines Artikels in der Titelleiste des Browsers anzuzeigen. Und eine unabhängige TNG-Installation wird natürlich genau das Selbe machen.

Die eigentliche Herausforderung ist nun, den WordPress-Titel auf den Seiten zu überschreiben, wo TNG-Inhalte dargestellt werden. Nachdem ich mir den generierten HTML-Quellcode ansah stellte ich fest, dass die Lösung einfacher war als erwartet:
Das TNG-Integrations Plugin klinkt sich in den head-Abschnitt der Seite ein und fügt den TNG-Titel und noch weitere Metadaten ein. Aber der Titel wird nicht dargestellt, da der verwendete Hook erst greift, nachdem das WordPress-Theme bereits den Titel aus WordPress gesetzt hat. Daher gibt es zwei title-Tags im head-Abschnitt, und der erste kommt von WordPress und gewinnt.

Daher muss der WordPress-Titel entfernt werden aus dem Header. Allerdings darf dies nur bedingt geschehen damit der Titel für die normalen WordPress-Seiten, -Kategorien und -Artikel erhalten bleibt. Ich habe die Datei header.php in mein Child-Theme kopiert. So werden Änderungen an der Datei nicht durch spätere Aktualisierungen des Themes überschrieben. Der relevante Abschnitt lässt sich leicht erkennen am  title-Tag:

<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>" />
<meta name="viewport" content="width=device-width" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<title><?php wp_title( '|', true, 'right' ); ?></title>
<link rel="profile" href="http://gmpg.org/xfn/11" />
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" />
<body class="page page-id-332 page-template">
...

Darum habe ich nun eine Bedingung gepackt. In diesem Beispiel ist 332 die eindeutige ID der leeren WordPress-Seite, welche von TNG zur Anzeige der Daten innerhalb von WordPress genutzt wird. Man kann die ID einerseits im Backend sehen wenn man mit der Maus über den Link zur Seite fährt. Alternativ ist er auch im body-Tag der Seite sichtbar. Das Ausrufezeichen vor dem is_page() negiert den Ausdruck: Wenn wir nicht auf Seite 332 sind, dann soll der WordPress-Titel hinzugefügt werden. Der Quelltext sieht nun so aus:

<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>" />
<meta name="viewport" content="width=device-width" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<?php if ( !is_page( 332 )) { ?>
    <title><?php wp_title( '|', true, 'right' ); ?></title>
<?php } ?>
<link rel="profile" href="http://gmpg.org/xfn/11" />
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" />
<body class="page page-id-332 page-template">
...

Das ist bereits alles. Da nun auf den TNG-Seiten nur noch der TNG-Titel übrig bleibt, wird dieser auch angezeigt.

2 Gedanken zu “Wie man den WordPress-Titel überschreibt mit dem TNG-Titel

Schreibe einen Kommentar