
Un fil d'ariane en fonction du menu personnalisé ? Pourquoi ?
Il est parfois nécessaire de construire un fil d'ariane avec wordpress. Il existe de très bon plugins déjà tout fait. Malheureusement, ceux-ci affichent le fil d'ariane en fonction de l'arborescence des pages Wordpress; Or parfois nous avons besoin d'avoir un breadcrumb relatif à notre menu personnalisé.
Comment fait-on alors ?
Nous allons passer par un fonction de Wordpress bien connu : wp_nav_menu() à laquelle nous allons indiquer un Walker.
Le code du Walker :
Voici le code du Walker. Écrivez celui-ci dans le fichier functions.php de votre thème ou bien alors, si vous avez suivi mes bonnes pratiques, créez un fichier à part que vous inclurer dans votre fichier functions.php.
class bi_BreadCrumbWalker extends Walker{ var $tree_type = array( 'post_type', 'taxonomy', 'custom' ); /** * @see Walker::$db_fields * @var array */ var $db_fields = array( 'parent' => 'menu_item_parent', 'id' => 'db_id' ); /** * delimiter for crumbs * @var string */ var $delimiter = ' > '; /** * @see Walker::start_el() * * @param string $output Passed by reference. Used to append additional content. * @param object $item Menu item data object. * @param int $depth Depth of menu item. * @param int $current_page Menu item ID. * @param object $args */ function start_el(&$output, $item, $depth, $args) { //Check if menu item is an ancestor of the current page $classes = empty( $item->classes ) ? array() : (array) $item->classes; $current_identifiers = array( 'current-menu-item', 'current-menu-parent', 'current-menu-ancestor' ); $ancestor_of_current = array_intersect( $current_identifiers, $classes ); if( $ancestor_of_current ){ $title = apply_filters( 'the_title', $item->title, $item->ID ); //Preceed with delimter for all but the first item. if( 0 != $depth ) $output .= $this->delimiter; //Link tag attributes $attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : ''; $attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : ''; $attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : ''; $attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : ''; //Add to the HTML output //$output .= ''.$title.''; // added by me to remove the link on the current page item if ( in_array("current-menu-item", $classes) ) { $output .= ''.$title.''; } else { $output .= ''.$title.''; } } } }
Appel du fil d'ariane dans les fichiers templates
Pour afficher le fil d'ariane, insérez le code ci-dessous où vous le souhaitez dans votre thème :
wp_nav_menu( array( 'theme_location' =--> 'Menu', 'walker'=> new bi_BreadCrumbWalker, 'container' => none, 'items_wrap' => '%3$s' ));
Source : http://wordpress.stackexchange.com/questions/50425/show-current-navigation-path-from-menu
Commentaire sur l'article
Aucun commentaire sur l'article pour l'instant. Soyez le premier à commenter ça!