web-dev-qa-db-fra.com

Ajouter la classe CSS de l'élément de menu actuel à une archive de type de page personnalisée dans le menu Wordpress

J'ai beaucoup lu à ce sujet mais je n'ai pas trouvé de solution.

Fondamentalement, j'essaie d'afficher un élément de menu actuel sur une page dynamique créée par une archive de type de page personnalisée. Le contrôle de menu par défaut n'ajoute pas les noms de classes CSS des éléments de menu actuels. J'ai trouvé une solution ici - http://bloggingsquared.com/blogging-tips/how-to-add-the-current-menu-item-css-class-to-a-custom-link-in- a-wordpress-menu/

Qui est comme ça:

add_filter('nav_menu_css_class', 'AddCurrentMenuItemClass',1,2);

function AddCurrentMenuItemClass($classes,$item)
{
    $link = site_url().$_SERVER['REQUEST_URI'];
    if(strpos($link, $item->url) !== false)
    {
        $classes[] = 'current-menu-item';
    }
    return $classes;
}

Le problème que je rencontre est que la page d'accueil (qui est un élément de menu personnalisé) est mise en surbrillance, ainsi que la page sur laquelle je suis. Si je change l'instruction if en:

     if ( $link == $item->url )

Puis dans les travaux sur cette page, mais pas sur les sous-pages.

Pouvez-vous m'aider s'il vous plaît à résoudre ce problème? Je travaille sur un projet client dans les délais impartis ...

Je suis sur WP 3.4.2 avec un modèle WooThemes premium: Whitelight

2
Zohar

C'est ce que tu veux faire

  add_filter( 'wp_get_nav_menu_items', 'cpt_archive_menu_filter', 10, 3 );
  function cpt_archive_menu_filter( $items, $menu, $args ) {
    foreach ( $items as &$item ) {
    if ( $item->type != 'custom' ) continue;
      if (  get_query_var( 'post_type' ) == 'your-post-type' && $item->title == 'Title of Link' ) {
        $item->classes []= 'class-name-your-want';
        } 
    }
    return $items;
  } 

Bien que ce qui précède fonctionnera, Liens personnalisés se voit attribuer la classe current-menu-item. Cela ne devrait donc pas être nécessaire, si je vous suis correctement.

1
userabuser