mihdan
2/25/2016 - 1:20 PM

Скрыть из меню пустые таксономии

Скрыть из меню пустые таксономии

<?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 );