Titel und Linktexte bei einem WordPress-Blog kürzen


Individuelle Anpassungen

Titel sollten kurz und aussagekräftig sein. Dennoch lassen sich Titel nicht immer ideal gestalten, wenn selbige zugleich noch als Linktexte dienlich sein sollen. Doch umgebrochene Titel wirken zuweilen ebenso störend wie umgebrochene Links. Eine Einstellmöglichkeit, um die Titel für die Übersichtsseiten unabhängig von den Titeln der Posts zu gestalten, wurde bei der Einrichtung des Blogs nicht gefunden. Falls es eine entsprechende Option geben sollte, so hat diese sich zumindest gut versteckt.
Um die Länge der Titel dennoch individuell auf den jeweiligen Verwendungszweck (sei es als Titel für Übersichtsseiten oder sei es als Link unter letzte Beiträge in der Sidebar) unabhängig voneinander abzustimmen können, wurde eine spezielle, nur auf diese Aufgabe zugeschnittene Funktion geschrieben. Zuerst mussten jedoch die Dateien gefunden werden, in denen die Funktion the_title enthalten ist.

Die Suche nach den Dateien gestaltete sich bei Benutzung des auf der Seite “Im Quelltext oder Quellcode suchen” vorgestellten Tools nicht sonderlich problematisch. Nur die Anzahl der zu durchsuchenden Dateien sollte höher als 500 eingestellt werden, wenn die Suche von der obersten Ebene gestartet wird.
Lokalisiert wurden die Titel für die Übersichtsseiten beim Theme Twenty Twelve in der Datei twentytwelve/content.php und für die Links in der Datei wp-includes/default-widgets.php. In diesen beiden Dateien wurden die folgenden Code-Abschnitte ersetzt:

Zeile 23 in der Datei content.php
vorher:
<?php the_title(); ?>
nacher:
<?php echo kuerzeLinkText(esc_attr(get_the_title()), $wunschlaenge = 42, $wunschfarbe = false); ?>

Zeile 574 in der Datei default-widgets.php
voher:
<?php if ( get_the_title() ) the_title(); else the_ID(); ?>
nachher:
<?php if (get_the_title()) echo kuerzeLinkText(esc_attr(get_the_title()), $wunschlaenge = 22, $wunschfarbe = "b7b7b7"); else the_ID(); ?>

Da die Funktion die Übergabe der Wunschlänge sowie die Übergabe einer Wunschfarbe ermöglicht, können nun die Titel auf den Übersichtsseiten und die Linktexte von den Links unter “Letzte Beiträge” unabhängig von den eigentlichen Titeln der Artikel angepasst werden. Soll kein Farbwert übergeben werden, ist die Wunschfarbe auf false zu setzen. Es sei vermerkt, die Wunschfarbe bezieht sich nur auf die drei Punkte, damit die sich nicht störend bemerkbar machen.
Weitere Hinweise zur Funktionsweise wurden als Kommentare innerhalb des Scripts vermerkt. An dieser Stelle nur noch der Hinweis, dass dieses kleine Script in die Datei functions.php gehört und nicht über add_ oder wie auch immer eine API angesprochen wird, da der Funktionsaufruf direkt über den Namen der Funktion erfolgt.

/**
 * Kürzt längere Linktexte von den Links unter "Letzte Beiträge" und die Titel 
 * in den Übersichten wie Startseite, Kategorien und Archiv.
 */
function kuerzeLinkText($linktext, $wunschl, $wunschf) {

    if ($wunschl < 3) $wunschl = 22;

    /* Übernehme Farbwert falls nicht false */
    if ($wunschf != false) {
        $span = "<span style=\"color: #".$wunschf."\"> ...</span>";
    } else {
        $span = " ...";
    }
    $min = $wunschl;
    $max = $min +4;

    /* Zähle ob Text mindestens 22 Zeichen hat, falls nicht gebe mit Else aus. */
    if (strlen($linktext) > $min){

        /* Suche ab Position 22 nach einem Leerzeichen */
        $laenge = strpos($linktext, " ", $min);
        /*
        Nehme diese Position bis zum gefundenen Leerzeichen als neue Länge
        falls strpos nicht false meldete.
        */
        if ($laenge !== false){
            $gekuerzt = substr($linktext, 0, $laenge).$span;
        }
        /*
        Frage noch einmal nach, ob der Linktext wenigstens nicht länger als
        26 Zeichen ist.
        */
        elseif (strlen($linktext) <= $max) {
            $gekuerzt = $linktext;
        }
        /*
        Falls ja, dann kürze einfach im Wort.
        */
        else {
            $gekuerzt = substr($linktext, 0, $max)."...";
        }
    }
    else {$gekuerzt = $linktext;
    }
    return $gekuerzt;
}

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *