eigene Funktionen mit Shortcodes ganz einfach selber erstellen

Es gibt immer mal wieder diese kleinen Aufgaben, die auf (d)einer Website anfallen. Sei es im Footer das aktuelle Jahr zu hinterlegen, welches du mit wenig Aufwand automatisieren kannst, statt es jedes Jahr manuell zu ändern. Oder das limiteren von Inhalten nur auf bestimmten Seiten. In vielen Fällen reichen schon kleine Funktionen aus, um diese vermeintlich komplizierten Herausforderungen zu lösen.

Wir wollen in diesem Beitrag auf Mini-Funktionen mittels Shortcode eingehen. Mini-Funktionen deshalb, weil es kleine Helfer sind, wofür es sich kaum lohnen würde ein komplexes Plugin zu nutzen. Alle nachfolgenden PHP-Snippets kannst du in der functions.php deines Child-Themes hinterlegen und alle Beispiele sollten auf den aktuellen WordPress Versionen (5.0 und höher) ohne Probleme laufen. Die erstellten Shortcodes, z.B. [Test], kannst du dann direkt und unkompliziert in verschiedenen Inhaltsbereichen wie Seiten, Beiträgen, Widgets oder Templates benutzen.

Sollten deine Anforderungen an die Funktionen umfangreicher werden, sind Shortcodes evtl. nicht mehr die sinnvollste Lösung, weshalb du dann am besten auf Plugin-Lösungen zurückgreifst. Alternativ programmierst du dir ein eigenes Plugin mit den gewünschten Funktionen für deine WordPress Seite.

Solltest du noch weitere Ideen für nützliche Mini-Helfer haben, teile sie gerne in den Kommentaren und wir erweiteren diese Liste. Nun gehts aber direkt mit den ersten Beispielen los.

Shortcode aktuelles Jahr ausgeben (für z.B. Copyright)

Der folgende PHP-Code fügt einen einfachen Shortcode namens „year“ hinzu, der das aktuelle Jahr ausgibt.

// [year] shortcode
function year_shortcode() {
  $year = date('Y');
  return $year;
}
add_shortcode('year', 'year_shortcode');

Wenn du den Shortcode im Editor eines Beitrag oder auf einer Seite einfügst, wird er durch das aktuelle Jahr ersetzt, wenn die Seite im Frontend angezeigt wird. Auch im Footer als Copyright-Hinweis, wo gerne das aktuelle Jahr genutzt wird, kannst du ihn sinnvoll in den Templates deiner WordPress Seite unterbringen.

In unserem Beispiel würde der Shortcode das Jahr 2023 anzeigen, wenn der Code im Jahr 2023 ausgeführt wird. Der Shortcode kann zwischen Text und auch innerhalb von HTML-Tags verwenden, z.B.

<p>Dieser Beitrag wurde im Jahr [year] veröffentlicht.</p>

Dies würde auf der Seite (in 2023) angezeigt werden als:

„Dieser Beitrag wurde im Jahr 2023 veröffentlicht.“

Wenn du das aktuelle Datum ausgeben möchtest, kannst du folgenden Code nutzen:

// [datum] shortcode
function dwp_datum_shortcode() {
  $datum = date('d.m.Y');
  return $datum;
}
add_shortcode('datum', 'datum_shortcode');

Den Aufbau des Datums kannst du selbst bestimmen, indem du den Bereich bei „d.m.Y“ nach deinen Wünschen anpasst. In unserem Beispiel würde am 8. Januar 2023 das Datum in folgender Ansicht ausgegeben werden: 08.01.2023

Geburtstag automatisch berechnen (für z.B. Altersangaben)

Dieser Shortcode gibt das berechnete Alter automatisch in ganzen Jahren aus und man kann sich so die jährliche Änderung im Inhalt sparen. [1]WordPress Support Forum – Allgemeine Fragen

// [age] shortcode
function dwp_age_shortcode() {
    //date in mm/dd/YYY format; or it can be in other formats as well
    $birthDate = "02/28/2019";
    //explode the date to get month, day and year
    $birthDate = explode("/", $birthDate);
    //get age from date or birthdate
    $age = (date("md", date("U", mktime(0, 0, 0, $birthDate[0], $birthDate[1], $birthDate[2]))) > date("md")
    ? ((date("Y") - $birthDate[2]) - 1)
    : (date("Y") - $birthDate[2]));
    
    return $age;
}
add_shortcode( 'age', 'dwp_age_shortcode' );

Wenn du den Shortcode im Editor eines Beitrag oder auf einer Seite einfügst, wird er durch das aktuelle Jahr ersetzt, wenn die Seite im Frontend angezeigt wird. Auch im Footer als Copyright-Hinweis, wo gerne das aktuelle Jahr genutzt wird, kannst du ihn sinnvoll unterbringen.

Im Beispiel wurde das Geburtsdatum 28.02.2019 ewählt. Die Schreibweise des Datums ist MM/TT/JJJJ und kann auch umgestellt werden (siehe Kommentare im Code). Der Shortcode würde das Alter von 4 Jahren angeben, wenn er im März 2023 ausgeführt wird.

<p>Der Blog deinWP.de ist bereits [age] Jahre alt.<p>

Dies würde auf der Seite (im März 2023) angezeigt werden als:

„Der Blog deinWP.de ist bereits 4 Jahre alt.“

Möchtest du mehrerer Geburtstage hinterlegen, musst du dafür weitere Shortcodes generieren. Dupliziere dazu den o.g. PHP-Code und ändere den Namen der Funktion „dwp_age_shortcode“ sowie die Bezeichnung des Shortcodes „age“ selbst. Diese Angaben dürfen sich nicht überschreiben, weshalb sie einen eigenen Namen benötigen. Nutze z.B. „dwp_agepetra_shortcode“ und „agepetra“ um zusätzlich das Alter für Petra oder einer anderen Person auszugeben.

Inhalte mit Shortcode nur auf bestimmten Seiten anzeigen

Das folgende Code-Snippet erstellt einen (2teiligen) Shortcode namens „page-only“. Er kann verwendet werden, um Inhalte nur auf bestimmten Seiten anzuzeigen. Gerade für Templates ist dies ein sinnvoller Anwendungsbereich, denn hier kannst du den Inhalt global im Template hinterlegt und die inhaltliche Ausgabe je Post-ID differenzieren.

// [page-only] shortcode
add_shortcode('page-only', 'dwp_page_only_shortcode');
function dwp_page_only_shortcode($atts, $content = null){ 
    if( !is_page ( array(123, 456, 789) ) ){ 
        return wpautop( do_shortcode( $content ) ); 
    } else {
        return null; 
    } 
}

Alles was innerhalb des öffnenden [page-only] und schließenden [/page-only] Shordcodes steht, wird auf den Seiten angezeigt, wo der Shortcode hinterlegt ist. Zusätzlich muss die hinterlegt ID mit der Seite (bzw. dem Post-Typ) übereinstimmen. Der Shortcode kann beliebigen Inhalt wie Text oder gar einen weiteren Shortcode mit dynamischen Inhalte enthalten. Um den maskierenden Shortcode selbst zu verwenden, musst du ihn in den Inhalt der Seite einfügen, auf der du den Inhalt anzeigen lassen möchtest. Der Shortcode kann in nahezu alle Text- oder HTML-Bereiche jeglicher Editoren (z.B. Gutenberg, Elementor, WP-Bakery usw.) eingefügt werden.

Zum Beispiel:

[page-only]Dieser Inhalt wird nur auf Seite 123, 456 und 789 angezeigt[/page-only]

Wenn der Shortcode auf einer Seite mit der ID 123, 456 oder 789 verwendet wird, wird der Inhalt, der zwischen den Shortcode-Tags steht, angezeigt. Auf allen anderen Seiten wird der Inhalt nicht angezeigt.

Bonus:
Falls du zusätzliche Bedingungen für die Ausgabe nutzen möchtest, schaust du am besten mal hier rein: https://codex.wordpress.org/Conditional_Tags

Quellen und Fußnoten[+]

Erkunde weitere Beiträge

Schreibe einen Kommentar