WordPress: Eigenes Menü für bestimmte Seiten

Ich bin ja immer noch dabei, mein “Portfolio” ein bisschen aufzuarbeiten, und dabei soll WordPress auch als CMS benutzt werden. Jetzt hätte ich gerne auf den Seiten, die ein bestimmtes Projekt beschreiben ein Menü, dass sich auf die Unterseiten dieser Seite beschränkt, und nur einen generelle Link zurück zu Blog hat. Auf dem Blog soll natürlich weiterhin das normale Menü angezeigt werden.

Die Lösung war eine Kombination aus der WP 3.0 Menü Funktion und einem kleinen PHP Hack. Zuerst ein Mal zu der Menü Funktion: Diese Funktion ist mit WordPress 3.0 verfügbar und ermöglicht es, unter Design/Menüs eigene Menüs zu erstellen. (Wenn das Theme das unterstützt) Nur was macht man damit? Zum einem kann das Menü einer Position im Theme zuweisen. Das ist praktisch, wenn man die automatische Menüanordnung nicht mag. Doch mit einem kleinem Eingriff wird das ganz noch mächtiger!

Alles was man machen muss, ist diese Zeilen in die funktions.php des Theme zu kopieren:

<?php
//Filter the arguments for the wp_nav_menu_function to include a custom menu on pages.
function nr_2010_wp_nav_menu_args($args = '')
{
	if(is_page()) //custom menus only on sites
	{
		global $post;
		$page_slug = sanitize_title($post->post_title);

		if(is_nav_menu('page-' . $page_slug)) //if a menu with the name page-{page url form} exists, use it.
		{
			$args['menu'] = 'page-' . $page_slug;
		}
	}
	return $args;
}
add_filter( 'wp_nav_menu_args', 'nr_2010_wp_nav_menu_args' );
?>

Kleine Erklärung: Es wird ein Filter auf die Parameter der wp_nav_menu gesetzt. In diesem Filter kann man die Parameter der Funktion ändern, bevor sie ausgeführt wird. (Alles Teil des genialen Plugin Systems von WordPress) Wenn grade eine Seite (is_page) angefragt wird, wird in der Variable post_slug die URL Form des Titels gespeichert und wenn auch ein Menu existiert (das wie oben beschrieben erstellt wurde), das den Name page-{post_slug} hat, wird dieses statt dem normalem Menü angezeigt.

Viel Text für eine einfache Erklärung: Ich kann einfach ein Menü mit einem passenden Namen erstellen, und es wird anstelle des normalen Menüs angezeigt! Super einfach ;)

Verbesserungsideen: Den Namen des Menüs aus einem Custom Filed des Posts leses…

Ähnliche Beiträge:

About Niklas

Ich bin Niklas Rother, der Autor dieses Blogs. Ich schreibe hier über meine Erfahrungen mit XNA, (speziell bei der Entwicklung meines Spiels, The Kingdom of Darkness), über meine anderen Programme, und was mir sonst noch so technisches einfällt. Momentan erscheint hier ca. 1x pro Woche ein Artikel...
This entry was posted in mein Blog, PHP, Programmieren, Tipps & Tricks and tagged , , , . Bookmark the permalink.

2 Responses to WordPress: Eigenes Menü für bestimmte Seiten

  1. Mohammed Errouzi says:

    Ich bin beeindruckt! Bitte halte uns auf dem laufenden!

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>