Kategorieverknüpfungen ausblenden, wenn in den Kategorien nichts enthalten ist – Untermenüpunkt Hauptnavigation

In meinem Hauptnavigationsmenü habe ich Kategorielinks, die Untermenüpunkte sind:

Beispiel:

Hauptnavigation: Einträge

Untermenü Kategorie Artikel: Bootfahren, Camping, Angeln

Also, im Grunde, wenn es keine Auflistung in Bootfahren gibt, ist die Kategorie Link nicht da

So wie es im Moment aussieht, wenn ein Benutzer auf die Untermenü-Kategorie-Elemente klickt und dort keine Auflistung ist, gibt es ihnen die Entschuldigung nichts gefunden. Das ist verwirrend

Stattdessen versuche ich vielleicht, ein einfaches Plugin zu erstellen, das nur die Navigationslinks der Untermenü-Kategorie anzeigt, wenn darin Listen enthalten sind. Wenn in ihnen keine Einträge vorhanden sind, wird die Link-Navigationskategorie nicht angezeigt. Scheint ziemlich einfach und ich habe versucht, im Internet und auf WordPress zu suchen, aber ich kann nichts finden. Ich bin kein Programmierer, aber ich bin mir sicher, dass ich das mit ein wenig Hilfe erreichen kann. Vielen Dank

Solutions Collecting From Web of "Kategorieverknüpfungen ausblenden, wenn in den Kategorien nichts enthalten ist – Untermenüpunkt Hauptnavigation"

Sie sollten das mit einem benutzerdefinierten Nav Walker versuchen. Hier ist ein Codebeispiel, wie es funktionieren soll.

Ich überprüfe, ob der Menüpunkt ein Kategorie-Link ist. Wenn ja, gibt es einen weiteren Check -> category count.
Wenn die Kategorie keine Beiträge hat, wird der Link nicht an die HTML-Ausgabe übergeben.

class Menu_Category_Count extends Walker_Nav_Menu { var $number = 1; function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) { $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; $class_names = $value = ''; $classes = empty( $item->classes ) ? array() : (array) $item->classes; $classes[] = 'menu-item-' . $item->ID; $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args ) ); $class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : ''; $id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args ); $id = $id ? ' id="' . esc_attr( $id ) . '"' : ''; $output .= $indent . '
  • '; $atts = array(); $atts['title'] = ! empty( $item->attr_title ) ? $item->attr_title : ''; $atts['target'] = ! empty( $item->target ) ? $item->target : ''; $atts['rel'] = ! empty( $item->xfn ) ? $item->xfn : ''; $atts['href'] = ! empty( $item->url ) ? $item->url : ''; $atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args ); $attributes = ''; foreach ( $atts as $attr => $value ) { if ( ! empty( $value ) ) { $value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value ); $attributes .= ' ' . $attr . '="' . $value . '"'; } } // Get Category + Category Count $have_posts = true; if ($item->object == "category") { $category = get_category($item->object_id); // Does the category have any posts? if ($category->category_count == 0) $have_posts = false; } if ($have_posts) { $item_output = $args->before; $item_output .= ''; $item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after; $item_output .= ''; $item_output .= $args->after; } $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args ); } }
  • Wenn Sie sich nie mit einem speziellen Nav-Walker beschäftigt haben, casting Sie einen Blick auf dieses Tutorial bei tutsplus .