Nehmen wir an, du hast eine Funktion hallowelt()
, die „Hallo Welt“ zurückgibt:
function hallowelt() {
return 'Hallo Welt';
}
Die Ausgabe der Funktion soll aber nicht irgendwo, sondern im Footer im Frontend erfolgen. In dem Fall legst du ein Child-Theme an, kopierst das Template footer.php
vom Parent-Theme in das Child-Theme und fügst eine Zeile mit der Funktion hinzu, sinngemäß sowas wie <?php echo hallowelt(); ?>
.
Vielleicht möchtest du die Funktion aber statt im Footer im laufenden Text von Beiträgen und Seiten ausgeben können, wann immer der/die Anwender/-in es möchte? Dazu sind Shortcodes praktisch, die du selber definieren kannst.
add_shortcode( 'hallo', 'hallowelt' );
fügt einen Shortcode [hallo]
hinzu, der den Rückgabewert der Funktion hallowelt()
in den Inhalt einfügt, der dann vom Template im Frontend wieder ganz normal ausgegeben wird. Damit die Ausgabe nicht vorzeitig irgendwo erfolgt, dürfen Shortcode-Funktionen nur einen Wert mit return
zurückgeben (und nicht mich echo
ausgeben).
Auf dein konkretes Beispiel angewandt bedeutet das, dass du im Plugin z.B. einen Shortcode [teilnehmer]
hinzufügst
add_shortcode( 'teilnehmer', 'teilnehmerliste_abrufen' );
und dann mit der Funktion teilnehmerliste_abrufen()
die Abfrage der Datenbank vornimmst und mit einer Ausgabe zum Rendern des Shortcode per return
hinzufügst. Sinngemäß sowas wie
function teilnehmerliste_abrufen() {
$output = 'Name, Vorname<br>';
$db_abfrage = … // Abfrage der Datenbank
foreach ($db_abfrage as $datensatz) {
$output .= $datensatz['name'] . ', ' . $datensatz['vorname'] . '<br>';
return $output;
}
Nun müsste, wann immer der Shortcode [teilnehmer]
verwendet wird, im Frontend eine Liste der Teilnehmer ausgegeben werden.
Shortcodes können noch mit Parametern erweitert werden, die z.B. für die Datenbankabfrage übergeben werden. Die Dokumentation hat da ein hübsches Beispiel: https://developer.wordpress.org/plugins/shortcodes/shortcodes-with-parameters
Einsteiger wählen öfters den Weg, statt der von WordPress bereits angebotenen Funktionen eigene Datenbanktabellen und gesonderte Abfragen zu verwenden. Es ist aber leichter, z.B. Teilnehmende als eine eigene Inhaltsart zu behandeln und dazu einen eigenen Inhaltstyp (Custom Post Type) zu erstellen. Das hat den Vorteil, dass WordPress dir gleich ein eigenes Menü zum Bearbeiten und hinzufügen einrichtet. Mit Custom Fields kannst du Meta-Angaben wie Geburtsdatum, Telefonnummer oder bezahlten Eintritt festhalten. Du kannst auch eigene Kategorien („männlich, weiblich, divers“) oder ein ganz eigenes Sortierkriterium („Bundesland“) festlegen, was dir dann mit einer Meta-Query eine Ausgabe aller „Teilnehmerinnen, die vor 1984 geboren sind und in Bayern wohnen“ ermöglicht. Natürlich soll das Ganze nicht unnötig verkompliziert werden, aber meistens ist es einfacher, einen Custom Post Type anzulegen, als das Rad bzw. die Datenbank-Tabelle neu zu erfinden.