Kommt es in WooCommerce zu leeren Kategorien, so werden diese standardmässig nicht im Menü ausgeblendet – leider keine zufriedenstellende User-Experience.
Mit dem folgenden Code lässt sich das Problem in WooCommerce elegant lösen:
|
1 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php // Hides empty WooCommerce Categories in Menu Bar. // Protects first level menu items // function exclude_empty_cat_menu_items( $items, $menu, $args ) { // Get a list of product categories that excludes empty categories $non_empty_categories = get_categories(array('taxonomy' => 'product_cat')); // Iterate over the menu items foreach ( $items as $key => $item ) { $is_empty = true; // check current item id is in the non-empty categories array foreach ( $non_empty_categories as $key2 => $cat ) if ($item->title === $cat->name || $item->menu_item_parent == 0) $is_empty = false; // if it is empty remove it from array if ($is_empty) unset($items[$key]); } return $items; } add_filter( 'wp_get_nav_menu_items', 'exclude_empty_cat_menu_items', null, 3 ); ?> |
Diese Filterfunktion lässt sich sehr elegant z.B. über CodeSnippets in WordPress einbauen. So können direkte Änderungen am Theme vermieden werden und WooCommerce bleibt update-fähig.

