Viele kennen das Problem: Die Titel in WordPress sind zu lang und deswegen sieht es in der Hauptübersicht irgendwie blöd aus, wenn ein Titel über 2 Reihen geht. In der Einzelansicht sieht es wiederum gut aus. Den Titel zu verkürzen kommt oft nicht in Frage, oder geht meistens auch nicht. Für alle die, die vor dem gleichen Problem stehen wie ich aktuell mit meinem neuen Projekt www.appkatalog.de. Hier ist dieses Thema natürlich noch viel wichtiger, da es ein sogenanntes Gallery-Theme ist und ich 2 Artikel immer nebeneinander angeordnet habe. Hier dürften die Titel theoretisch wenn ich keinen Umbruch will nur 31 Zeichen lang sein. Das ist eindeutig zu wenig!
Die Theorie
Damit dies auch jeder mit nur ein wenig PHP Kenntnissen versteht fangen wir mit der Theorie an. Zuerst müssten wir überprüfen welche Länge der Titel in WordPress hat. Hierfür können wir die WordPress-Funktion the_title() nicht verwenden, da sie direkt den Titel ausgibt. Wir brauchen hierfür also get_the_title(). Diese Funktion können wir ganz einfach einer Variablen (in meinem Fall $titel) zuweisen:
$titel = get_the_title();
Dies muss auf jeden Fall nach dem While-Befehl stehen
while (have_posts()) : the_post();
da wir ja den Titel jedes einzelnen Beitrags haben wollen.
Nun haben wir den Titel einer Variable zugeordnet und können ihn auf seine Länge überprüfen. Dies machen wir mit dem PHP-Befehl strlen. Der Befehl sieht dann so aus:
if (strlen($titel) > 31) {
31 ist hier die maximal geeignete Zeichenzahl vor einem Umbruch. Dieser Wert ist natürlich für jedes Theme individuell und muss ganz einfach ausprobiert werden.
Wenn unser $titel nun länger ist als 31 Zeichen soll er abgeschnitten werden. Dies erreichen wir mit dem PHP-Befehl substr. Hier wird der $titel von Zeichen 0 bis 28 ausgegeben:
echo substr($titel, 0, 28);
Nun würde es doch sehr blöd aussehen, wenn der Titel einfach abgeschnitten wäre. Deswegen setzen wir noch drei Punkte dahinter. Dies erreichen wir mit:
echo “…”;
}
Mit dem Titel von 0 bis 28 Zeichen und den 3 Punkten kommen wir also wieder auf die Maximale Zeichenanzahl von 31.
Wenn wir nun einen Titel haben der kürzer oder gleich viele Zeichen wie 31 hat soll dieser normal ausgegeben werden. Dies erreichen wir mit
else {
echo $titel;
}
oder auch
else {
the_title();
}
Die Praxis
Nun zeige ich euch, wie ihr das ganze hier einbauen könnt. In eurer index.php sucht ihr nach der Titel-Ausgabe <?php the_title(); ?> und ersetzt sie mit folgendem Code:
<?php
$titel = get_the_title();
if (strlen($titel) > 31) {
echo substr($titel, 0, 28);
echo “…”;
}
else {
echo “$titel”;
} ?>
Nun doch einfacher, als es sich in der Theorie angehört hat, oder?
Alternative
Eine sehr gute Alternative von gr4y ist außerdem das ganze in die functions.php des Themes zu packen und daraus einfach eine neue Titel-Funktion zu bauen. Der Code sieht dann folgendermaßen aus:
function shortTitle($the_title){
if (strlen($the_title) > 31)
return substr($the_title, 0, 28).’…’;
else
return $the_title;
}
add_filter ( ‘the_title’, ‘shortTitle’) ;
Danke dafür!
