WordPress: filtrare le voci dei menu di navigazione

Eliminare una voce dai menu di WordPress è un'operazione distruttiva. Infatti la voce eliminata viene completamente rimossa e non è più associata al menu in questione. In realtà esiste una soluzione più intelligente che consiste nel rimuovere dall'output HTML la voce scelta senza eliminarla.

Possiamo utilizzare il seguente codice:


function excludeMenuItems( $items, $menu, $args ) {
	foreach ( $items as $key => $item ) {
        	$id = get_post_meta( $item->ID, '_menu_item_object_id', true );
        	if($id == 134) {
        		unset($items[$key]);
        	}
    }
    return $items;
}

add_filter( 'wp_get_nav_menu_items', 'excludeMenuItems', null, 3 );

L'hook usato ha lo scopo di intercettare la generazione della marcatura del menu prima che questa abbia luogo. In questo stadio le voci del menu non sono altro che oggetti i quali possiedono delle proprietà a noi utili. Nel codice d'esempio abbiamo estratto l'ID di una voce (pagina, post o altro) e abbiamo effettuato un semplice test. In caso di risultato positivo, l'oggetto corrispondente alla voce del menu viene eliminato dall'array. Di conseguenza il menu verrà mostrato senza quella particolare voce.

Torna su