web-dev-qa-db-fra.com

Ajout de la classe 'active' aux taxonomies personnalisées en utilisant walker dans functions.php

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>';
    }
}?>
2
Gab

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

1
Gab