Wird WordPress in Form eines CMS benutzt, können beliebige Seiten angelegt werden, welche dann in der Navigation der Webseite angezeigt werden. Der Titel dieser Seiten wird an zwei verschiedenen Stellen ausgegeben – zum einen in der Navigation der Seite und zum andern als Seitenüberschrift (H1-Tag), wenn man die entsprechende Seite aufruft. Es kann nun sein, dass man für diese zwei Titel unterschiedliche Begriffe verwenden möchte. Als Beispiel: Auf der Webseite einer Internet-Agentur soll in der Navigation „Webdesign“ als Navigationspunkt erscheinen, und auf der Seite soll der Seitentitel „Willkommen im Bereich Webdesign“ zu sehen sein (welches für die Anzeige in der Navigation eindeutig zu lange ist).
Mit oder ohne Plugin
Natürlich gibt es in WordPress für fast jedes Problem ein passendes Plugin, aber es gibt auch Probleme, die ohne ein zusätzlich Hilfsmittel gelöst werden können. Wenn dies der Fall ist, ziehe ich eine solche Lösung immer vor. Ich möchte deshalb kurz beschreiben, wie die Titel mit wenig Aufwand separiert werden können.
Der Ansatz: Benutzerdefinierte Felder
In der Eingabemaske, in der man die Seite erstellt, gibt es unterhalb des Texteditors den Bereich „Benutzerdefinierte Felder“. Hier können für die jeweilige Seiten Namen- und Werte-Paare eingegeben werden, welche dann in den Template-Files abgefragt werden können. Für unseren Zweck können wir also beispielsweise den Namen „seitentitel“ verwenden. Dafür wählt man den Punkt „Neu eingeben“, schreibt als Variablennamen wie erwähnt „seitentitel“, und definiert als Wert die gewünschte Überschrift für die Seite (hier z.B. „Willkommen im Bereich Webdesign“).
Nun muss nur noch eine kleine Anpassung am Seitentemplate gemacht werden, welches die Seiten ausgibt. Diese kann je nach Theme etwas anders heissen, häufig wird sie aber mit page.php benannt sein. In diesem File sucht man die Stelle, wo die Überschrift ausgegeben wird. Diese könnte z.B. so aussehen:
<h2><?php the_title(); ?></h2>
Diese wird jetzt in der folgenden Form abgewandelt:
<h2>
<?php
$titel = get_post_meta($post->ID, "seitentitel", true);
if ($titel) {
echo $titel;
} else {
the_title();
}
?>
</h2>
Hier wird also zuerst der Wert des benutzerdefinierten Feldes abgefragt. Ist dieses vorhanden, wird es anstelle des Seitentitels verwendet. Falls nicht, wird wie vorher die Variable „the_title()“ verwendet.
Eignet sich auch hervorragend, um den title-tag und den Navigationstitel abzuheben. Die entsprechenden Änderungen werden dann nicht in der page.php sondern in der header.php vorgenommen.
Im Übrigen: Sehr gute Beschreibung !
ein sehr interessanter Artikel, allerdings finde ich in meinem Theme ( premiumtheme ) keine benutzerdefinierten Felder. könnt ihr ev. verraten wie man sowas mit plugin lösen kann? danke