Je veux quelque chose comme ça
Accueil> Produits> Acier> Ongles
Cette information devrait provenir de la structure du menu! J'ai installé Breadcrumb NavXT mais il semble que cela ne prenne que le chemin que j'ai défini (c'est le parent, etc.). Mais j'ai besoin de cela dans la structure du menu, pas de l'utilisateur. Dois-je définir la page parent pour chaque page ou existe-t-il une solution permettant de lire la hiérarchie à partir de mon menu? Je n'ai pas trouvé de fichier de navigation Breadcrumb NavXT et il semble que je doive écrire un script PHP pour cela.
Modifier:
Pour ma question suivante, j'ai ajouté le code suivant:
if(in_array('current-menu-item', $item->classes)){
$attributes .= ' class="active"';
}
Le meilleur moyen serait d’utiliser wp_nav_menu
avec un programme personnalisé.
Où que vous vouliez la chapelure ( pour l'emplacement du thème 'primaire' ):
<?php wp_nav_menu( array(
'container' => 'none',
'theme_location' => 'primary',
'walker'=> new SH_BreadCrumbWalker,
'items_wrap' => '<div id="breadcrumb-%1$s" class="%2$s">%3$s</div>'
) ); ?>
C'est très basique . (Cela pourrait être fait d'une autre manière -override display_element
à la place? - mais j'ai trouvé cela le plus simple). Cela devrait vivre dans votre functions.php
class SH_BreadCrumbWalker extends Walker{
/**
* @see Walker::$tree_type
* @var string
*/
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 .= '<a'. $attributes .'>'.$title.'</a>';
}
}
}