Скрыть из меню пустые таксономии
<?php
/**
* Фильтруем все меню на наличие пустых пунктов
*
* @param $items
* @param $menu
* @param $args
*
* @return mixed
*/
function roomble_wp_get_nav_menu_items ( $items, $menu, $args ) {
global $wpdb;
if ( 'shop_primary' == $menu->slug ) {
// Получить пустые таксономии (где нет термов)
$empty = $wpdb->get_col( "SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE count = 0 AND parent > 0" );
//PC::debug($empty);
if ( $empty && is_array( $empty ) ) {
foreach ( $items as $key => $item ) {
// Если текущий пункт меню есть в массиве пустых таксономий, удалим его
if ( ( 'taxonomy' == $item->type ) && ( in_array( $item->object_id, $empty ) ) ) {
unset( $items[ $key ] );
}
}
}
}
return $items;
}
add_filter( 'wp_get_nav_menu_items', 'roomble_wp_get_nav_menu_items', 10, 3 );