Neue Funktion wp_page_menu() in WordPress 2.7
von Simon [webdemar] - 4 Kommentare
In der Reihe der neuen Features von WordPress 2.7 beschäftige ich mich heute mit der neuen Funktion wp_page_menu() und ihren Einsatzmöglichkeiten in einem WordPress Theme.
Die Funktion wp_page_menu() ist der alten Page-Funktion wp_list_pages() sehr ähnlich. Genauer gesagt generiert wp_page_menu() einen div um die Page-Liste und dient somit als Container für die wp_list_pages() und bietet uns zusätzlich die Möglichkeit einen Homepage-Link hinzuzufügen, die Klasse des Container-divs zu bestimmen und Text oder HTML vor und/oder nach dem Linktext innerhalb der a-Tags auszugeben (sinnvoll z. B. für Sliding Doors). Außerdem können neben den unten genannten Parametern weiterhin alle der alten Funktion wp_list_pages() verwendet werden.
Parameter wp_page_menu():
- title_li: Titel der Liste. Ist dieser null oder leer wird kein Titel angezeigt und die Liste wird nicht automatisch in ein ul-Tag gepackt.
- sort_column: Reihenfolge der Seiten (sortier nach ‘menu_order’, ‘post_title’, ‘post_date’, ‘post_modified’, ‘ID’, ‘post_author’ oder ‘post_name’).
- menu_class: CSS-Klasse des Container-divs.
- echo: Dieser Wert kann 0 oder 1 sein. Bei 0 (dafault) wird die Liste nicht ausgegeben und kann als HTML-String mit PHP weiterverarbeitet werden.
- show_home: Dieser Wert kann 0 oder 1 sein. Bei 0 (default) wird kein Link ‘Home’ (Blog-URL) als erster Listenpunkt ausgegeben.
- link_before: Text- oder HTML-String innerhalb des a-Tags vor dem Linktext.
- link_after: Text- oder HTML-String innerhalb des a-Tags nach dem Linktext.
Standardwerte wp_page_menu():
$defaults = array(
'title_li' => '',
'sort_column' => 'menu_order',
'menu_class' => 'menu',
'echo' => false,
'link_before' => '',
'link_after' => ''
);
Aufruf wp_page_menu():
Ein Aufruf der Funktion in WordPress 2.7 könnte also bspw. wie folgt aussehen:
<?php wp_page_menu('show_home=1&include=1,2,4,7&menu_class=page-navi&title_li='); ?>
Bemerkung:
Wir können auch den Parameter ‘include’ verwenden, da, wie angesprochen, auch alle Parameter der alten wp_list_pages() verwendet werden können.
Ausgabe wp_page_menu():
Die Ausgabe dieser Funktion würde dann folgendermaßen aussehen:
<div class='page-navi'>
<ul>
<li class='current_page_item'><a href='#'>Home</a></li>
<li class='page_item page-item-1'><a href='#' title='Seite1'>Seite1</a></li>
<li class='page_item page-item-2'><a href='#' title='Seite2'>Seite2</a></li>
<li class='page_item page-item-3'><a href='#' title='Seite4'>Seite4</a></li>
<li class='page_item page-item-3'><a href='#' title='Seite7'>Seite7</a></li>
</ul>
</div>
Kompatibilität wp_page_menu():
Nun werden sicherlich nicht gleich alle ihre WordPress-Installation auf WordPress 2.7 aktualisieren. Wir wollen also in unserem WordPress Theme die neue Funktion nutzen, müssen jedoch für ältere Versionen auch ‘rückwärts’kompatibel sein.
Mit folgendem Aufruf sichern wir uns dahingehend ab:
<?php if(function_exists('wp_page_menu')) : ?>
<?php wp_page_menu('show_home=1&menu_class=page-navi&title_li='); ?>
<?php else : ?>
<div class='page-navi'>
<ul>
<li <?php if(is_home()) { ?>class='current_page_item'<?php } ?>>Home</li>
<?php wp_list_pages('title_li='); ?>
</ul>
</div>
<?php endif; ?>
Bemerkung:
Wir fragen in diesem Beispiel erst ab, ob es die Funktion wp_page_menu() überhaupt gibt. Sollte sie nicht vorhanden sein (bei einer älteren WordPress-Version), wird lediglich die alte Funktion wp_list_pages() aufgerufen. Den Container-div und den Homepage-Link müssen wir in diesem Fall, wie gehabt, selbst erstellen.
Relevante Links:
Simon [webdemar]
Moin, ich bin Simon und betreibe webdemar.com als meine ernstgemeinte Spielwiese für WordPress, Webdesign und so.


2 Kommentare
Mark - 15. Dezember 2008
Super geiles Tutorial. Vielen Dank dafür. Werde das auf jeden Fall verwenden. Super Blog!!!
TheoCoda - 16. Dezember 2008
Schönes Ding. Das werde ich mal testen.
2 Trackbacks