Wenn man in WordPress seine statischen Seiten oder Unterseiten auflisten will, nimmt man dafür den template_tag “wp_list_pages”. Dies ist jedoch bekanntermassen PHP und kann daher nicht so einfach in eine Seite (also den Post) integriert werden. Vielmehr müsste man den PHP-Code in ein extra Template einfügen oder per if-Abfrage innerhalb des Standard-Templates steuern. Dies hat jedoch immer den Nachteil, dass die Ausgabe vor oder nach dem Content der Seite erscheinen muss.
Viel einfacher ist es, den PHP-Code innerhalb der Seite im Editor zu integrieren und somit die freie Wahl der Platzierung zu haben. Da es wie gesagt PHP-Code ist, der dann nicht ausgeführt sondern von WordPress ignoriert wird, benötigt man dafür wiederum ein Plugin, welches die Ausführung von PHP innerhalb des Postings erlaubt. Dies birgt jedoch u.U. Sicherheitsrisiken.
Auf der sicheren Seite ist man, wenn die Funktion einfach ausgelagert wird. WordPress stellt dafür die Datei functions.php im Template-Ordner bereit. Sollte sie nicht vorhanden sein, kann sie einfach per Editor (bitte ohne BOM abspeichern) erstellt werden. Dort wird dann einfach nur ein Shortcode referenziert, der dann im Posting an jeder beliebiger Stelle platziert werden kann.
Der Shortcode wird von WordPress erkannt, die Funktion ausgeführt, das Ergebnis auf der Seite an der gewünschten Stelle abgebildet. Zwei ganz einfache Funktionen habe ich nachfolgend einmal abgebildet.
1. Die erste zeigt sämtliche Unterseiten der aktuellen Seite an.
Dieser Code kommt in die functions.php:
function unterseiten_func() {
// liest die ID der aktuellen Seite aus
global $id;
$ausgabe = wp_list_pages('title_li=&child_of=' . $id . '&echo=0');
return '<ul>' . $ausgabe . '</ul>';
}
add_shortcode('unterseiten', 'unterseiten_func');
Der Shortcode bei der Erstellung der Seite lautet:
[unterseiten]
Die HTML-Ausgabe (als Liste) sieht dann so aus:
<ul>
<li>Unterseite 1</li>
<li>Unterseite 2</li>
</ul>
2. Die zweite zeigt sämtliche Unterseiten einer explizit definierten Seite an.
Dieser Code kommt in die functions.php:
function unterseiten_func($atts) {
// liest die im Shortcode angegebene ID aus
extract(shortcode_atts(array(
'von' => '',
), $atts));
$ausgabe = wp_list_pages('title_li=&child_of=' . $von . '&echo=0');
return '<ul>' . $ausgabe . '</ul>';
}
add_shortcode('unterseiten', 'unterseiten_func');
Der Shortcode bei der Erstellung der Seite (oder aber auch eines Artikels) lautet:
[unterseiten von="IDderSeite"]
Die HTML-Ausgabe ist vom Aufbau identisch.

Ich und Social Media