web-dev-qa-db-de.com

Fügen Sie das aktuelle Menüelement CSS-Klasse zu einem benutzerdefinierten Seitentyparchiv im Wordpress-Menü hinzu

Ich habe viel darüber gelesen, aber keine Lösung gefunden.

Grundsätzlich versuche ich, ein aktuelles Menüelement auf einer dynamischen Seite anzuzeigen, die von einem benutzerdefinierten Seitentyparchiv erstellt wurde. Das Standardmenü-Steuerelement fügt die CSS-Klassennamen des aktuellen Menüelements nicht hinzu. Ich habe hier eine Lösung gefunden - http://bloggingsquared.com/blogging-tips/how-to-add-the-current-menu-item-css-class-to-a-custom-link-in- Ein-WordPress-Menü/

Welches ist wie folgt:

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;
}

Das Problem ist, dass die Startseite (ein benutzerdefiniertes Menüelement) und die Seite, auf der ich mich befinde, hervorgehoben sind. Wenn ich die if-Anweisung ändere in:

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

Dann wird auf dieser Seite gearbeitet, aber nicht auf Unterseiten.

Können Sie mir bitte helfen, das zu klären? Ich arbeite an einem Kundenprojekt mit einem richtigen Termin ...

Ich bin auf WP 3.4.2 mit einer Premium-WooThemes-Vorlage: Whitelight

2
Zohar

Dies ist, was Sie tun möchten,

  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;
  } 

Obwohl das oben Genannte funktioniert, wird Benutzerdefinierte Links die Klasse current-menu-item zugewiesen, sodass dies nicht erforderlich sein sollte, wenn ich Ihnen richtig folge.

1
userabuser