Erkl├Ąrung des WordPress Template Tags wp_list_pages

Kategorie: Wordpress Tipps

Mit dem Template Tag wp_list_pages werden grunds├Ątzlich alle statischen Seiten einer WordPress Installation aufgelistet. Durch die zur Verf├╝gung stehenden Parameter k├Ânnen viele verschiedene Ver├Ąnderungen vorgenommen und der Code an die invidiuellen Bed├╝rfnisse angepasst werden.

Inhalt

wp_list_pages ohne ├ťberschrift

Angenommen man hat in WordPress die links abgebildete Struktur an Unterseiten angelegt. Dann ergibt sich durch die Eingabe des Codes (<?php wp_list_pages();?> folgende Ausgabe im Frontend:

Die ├ťberschrift Seiten wird automatisch generiert, m├Âchte man eine Ausgabe ohne diese ├ťberschrift erreichen kann man die Funktion um einen Parameter erweitern.

<?php wp_list_pages('title_li=');?>

wird hinter title_li= kein Wert geschrieben, wird die ├ťberschrift weggelassen.

wp_list_pages als korrekte HTML-Liste

Im Frontend wird die Liste nun richtig dargestellt. Allerdings wird semantisch unkorrektes HTML erzeugt, weil der ├Âffnende und schlie├čende <ul> Tag fehlt:

<li class="page_item page-item-4">
<a href=".../erste-seite/">Erste Seite</a></li>
....

Erg├Ąnzt man diese beiden unschlie├čenden Tags erh├Ąlt man folgenden Code zur Erzeugung des semantisch korrekten Codes ohne ├ťberschrift:

<ul>
<?php wp_list_pages('title_li=');?>
</ul>

wp_list_pages Unterseiten ausblenden bzw. anzeigen

M├Âchte man mehrere Parameter variieren, kann man diese in eine Array ver├Ąndern und in einer Variable $args speichern. In diesem Fall wird eine Liste der Seiten ohne ├ťberschrift und mit der Tiefe depth=1 erzeugt, es werden also nur die Hauptseiten angezeigt. Um auch die Unterseiten anzeigen zu lassen, m├╝sste man depth=2 in den Code einf├╝gen, dann wird auch die zweite Men├╝ebene ber├╝cksichtigt wird.

<?php 
$args=array(
	'depth'        => 1,
	'title_li'     => '',
	);
?>
<ul>
<?php wp_list_pages($args);?>
</ul>

wp_list_pages bestimmte Seiten nicht anzeigen

Durch exclude kann man bestimmte Seiten aus der Auflistung ausschlie├čen. Dazu muss man dem Parameter die entsprechende id der Seite zuweisen. Die id der Seite erf├Ąhrt man, wenn man sich im Backend mit der Maus ├╝ber die Seite bewegt. Dann erscheint unten links ein Code der Art …?post=6 und somit hat die Seite die id 6. In unteren Beispielcode werden die zweite Seite (id=6) und die vierte Seite (id=10) ausgeblendet. Der Befehl include hat den gegenteiligen Effekt, hier m├╝ssen die Seiten aufgelistet werden, die angezeigt werden sollen, alle andere Seiten werden nicht angezeigt.

<?php 
$args=array(
	'exclude'        => '6,10',
	'title_li'     => '',
	);
?>
<ul>
<?php wp_list_pages($args);?>
</ul>

wp_list_pages nur die Unterseiten einer bestimmten Seite anzeigen

Um nur die Unterseiten einer bestimmten Seite anzeigen zu lassen, muss man wieder die id feststellen und diese id dann dem Element child_of zuweisen. Die Dritte Seite hat die id 8, daher werden durch folgenden Code nur die Unterseiten der Dritten Seite angezeigt.

<?php 
$args=array(
	'child_of'     => '8',
	'title_li'     => '',
	);
?>
<ul>
<?php wp_list_pages($args);?>
</ul>

wp_list_pages per Shortcode die Unterseiten anzeigen lassen

Bei der oben vorgestellten Variante, m├╝ssen die ids f├╝r jede Seite einzeln rausgesucht und dann in den Code eingetragen werden. Es gibt allerdings auch die M├Âglichkeit folgende Funktion in die functions.php einzutragen:

function unterseiten_aktive_seite() {
   global $post;
   return '<ul>'.wp_list_pages('title_li=&child_of='.$post->ID).'</ul>';
}
add_shortcode('unterseiten', 'unterseiten_aktive_seite');

Dadurch wird die id der aktiven Seite dynamisch ausgelesen und anschlie├čend werden nur die Unterseiten dieser Seite angezeigt.Durch den Shortcode [unterseiten] kann dieser Shortcode im Backend jeweils auf der gew├╝nschten Seite im Texteditor eingegeben werden und im Frontend werden dann die UNterseiten, der jeweils gerade aktiven Hauptseite angezeigt.