Ocultar categorías vacías del menú de WordPress

Si tenemos un menú extenso como puede ser el caso de una tienda online con WooCommerce donde se muestran las distintas categorías de productos pero queremos que automáticamente se oculten mientras esas categorías están vacías o tienen productos en borrador podemos usar el siguiente snippet en el archivo functions.php

add_filter( 'wp_get_nav_menu_items', 'gowp_nav_remove_empty_terms', 10, 3 );
function gowp_nav_remove_empty_terms ( $items, $menu, $args ) {
	global $wpdb;
	$empty = $wpdb->get_col( "SELECT term_taxonomy_id FROM $wpdb->term_taxonomy WHERE count = 0" );
	foreach ( $items as $key => $item ) {
		if ( ( 'taxonomy' == $item->type ) && ( in_array( $item->object_id, $empty ) ) ) {
			unset( $items[$key] );
		}
	}
	return $items;
}

De esta forma evitamos tener que editar el menú cada vez que queramos ocultar estas categorías, sobre todo si son estacionales.

Fuente: GoWP

2 comentarios en “Ocultar categorías vacías del menú de WordPress”

  1. estoy buscando algo similar a esto y no encuentro nada… seria genial si pueden darme algo de luz al tema. Busco un snippet que sea par eliminar una categoria de woocommerce y los productos que formen parte de ella.

    esto es para mostrar la categoria y sus productos para momentos puntuales

    gracias y espero no molestarles mucho

    1. Snippets para WordPress

      Si ocultas la categoría, los productos siguen estando publicados e indexados por lo que se pueden mostrar en la web si alguien usa el buscador, para no mostrarlos puedes dejar esos productos en borrador, de esa forma la categoría no se muestra y solo sería visible en el momento en el que alguno de esos productos quedara visible.

Deja un comentario