Shortcode zur Altersberechnung

Bei der Aktualisierung der Webseite des GeekWeek-Podcasts bin ich auf ein kleines Problem gestoßen, das sicher auch für andere WordPress-Nutzer von Interesse ist. Dort ist in den Beschreibungen der beteiligten Personen jeweils das Alter in Jahren angegeben. Theoretisch müsste man deshalb jeden einzelnen Text mit einer solchen Angabe alleine auf Grund des neuen Lebensjahres einmal im Jahr entsprechend aktualisieren. Auf meiner Suche nach einem Weg um dies zu umgehen, bin ich auf eine einfache Lösung gestoßen, die diese Arbeit für einen übernimmt.

In WordPress lassen sich sog. Shortcodes definieren, mit denen Aufgaben übernommen werden können, die man sonst jedes Mal auf Code-Ebene umsetzten müsste. Diese Shortcodes sind Kurzbefehle, die in den Text eines Beitrags oder einer Seite eingefügt werden und eine vorher definierte Funktion ausgeben. Nun lässt sich auch ein Shortcode definieren, der in Texten als Platzhalter anstelle des Alters eingetragen wird und bei der Ausgabe des Textes durch das jeweils aktuelle Alter ersetzt wird. Dazu muss man lediglich den folgenden Code in die functions.php des verwendeten Themes kopieren:

add_shortcode('alter', 'altersberechnung');

function altersberechnung( $atts, $content = null )  {
    $alter = '';
 
    extract( shortcode_atts( array(
        'geburtstag' => '',
        'prefix' => '',
        'postfix' => ''
    ), $atts ) );
 
    $dateFormat  = "d.m.Y";
    $datePattern = '/^([123]0|[012][1-9]|31).(0[1-9]|1[012]).(19[0-9]{2}|2[0-9]{3})$/';
    if (preg_match($datePattern, $geburtstag, $matches))  {
        $day   = $matches[1];
        $month = $matches[2];
        $year  = $matches[3];
        $actDate = explode(".", date($dateFormat));
 
        $alter = $actDate[2] - $year;
        if ($actDate[1] < $month || ($actDate[1] == $month && $actDate[0] < intval($day))) { $alter--; }
        $alter = $prefix . $alter . $postfix;
    }
    return $alter;
}

 
Nun lässt sich mit dem Shortcode [alter geburtstag="24.02.1955"] das auf den Tag genau berechnete Alter in Texte von Beiträgen oder Seiten einfügen. Mit den Schlüsseln „prefix“ und „postfix“ können dem eigentlichen Alter noch Attribute oder andere Schriftzeichen wie Klammern voran- bzw. nachgestellt werden. Zur Demonstration habe ich den obigen Shortcode in den nachfolgenden Satz eingebaut: Würde der Apple-Gründer Steve Jobs noch leben, dann wäre er heute 69 Jahre alt.

1 Kommentar

  1. Christian

    Danke! Und noch mal danke! Hat mir heute super weitergeholfen!

    Grüße!

    9. Februar 2021 um 17:40 Uhr

Hinterlasse einen Kommentar

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