J'essaie d'utiliser le code suivant dans functions.php pour afficher un menu avec des catégories (taxonomies personnalisées en fait). Je veux simplement qu'il soit actif lorsque vous êtes sur la page en cours. Qu'est-ce que je fais mal?
Je constate également que la ligne $category = get_category($mycatid);
ne renseigne pas la variable $category
.
<?php
class walker_archives extends Walker_Nav_Menu
{
public function start_el( &$output, $item, $depth, $args )
{
$attributes = '';
! empty ( $item->attr_title )
and $item->attr_title !== $item->title
and $attributes .= ' title="' . esc_attr( $item->attr_title ) .'"';
! empty ( $item->url )
and $attributes .= 'href="' . esc_attr( $item->url ) .'"';
$attributes = trim( $attributes );
$title = apply_filters( 'the_title', $item->title, $item->ID );
$item_output = "$args->before<a $attributes>$args->link_before$title</a>"
. "$args->link_after$args->after";
$mycatid = $item->object_id;
$category = get_category($mycatid);
$mycatslug = $category->slug;
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
$class_names .= in_array("current_page_item",$item->classes) ? ' active' : '';
$class_names = ' class="staysexy'. esc_attr( $class_names );
$output .= $indent . '
<li id="nav-menu-item-'. $item->ID . '" class="genre-'. $mycatslug . '">';
$output .= apply_filters(
'walker_nav_menu_start_el'
, $item_output
, $item
, $depth
, $args
);
}
public function start_lvl( &$output )
{
$output .= '<ul class="sub-menu">';
}
public function end_lvl( &$output )
{
$output .= '</ul>';
}
function end_el( &$output )
{
$output .= '</li>';
}
}?>
Remplacer current_page_item
par current-menu-item
a résolu le problème car il s’agissait de taxonomies et non de pages.
Quelle est la différence entre current_page_item et current-menu-item