Aggiungere un item come submenu del menu principale

felino

Utente Attivo
12 Dic 2013
882
8
18
Aci Catena (Catania)
Buongiorno a tutti!

Nel mio sito in Wordpress sto utilizzando il plugin BuddyPress.

Nel mio "Menu Header" inserito come "Main Menu" vorrei aggiungere un link al profilo dell'utente.

Il seguente codice funziona correttamente:
Codice:
// Filter wp_nav_menu() to add profile link
add_filter( 'wp_nav_menu_items', 'my_nav_menu_profile_link');
function my_nav_menu_profile_link($menu) {  
    if (!is_user_logged_in())
	{
         return $menu;
    } else {
         $user_data = bbp_get_user_profile_url( get_current_user_id() );
         $profilelink = '<li><a href="'.$user_data.'" >Profile</a></li>';
         $menu = $menu . $profilelink;
         return $menu;	 
    }
}
Però ho due problemi:
1) come faccio a far in modo di inserirlo come item di un determinato sotto menu?
2) vorrei utilizzare
Codice:
$args->theme_location == ''
al fine di farlo visualizzare solo nel menu desiderato, ma non ho capito quale parametro associare.

Grazie.
 

felino

Utente Attivo
12 Dic 2013
882
8
18
Aci Catena (Catania)
Ho risolto per quanto riguarda il "theme_location".

Tramite:
Codice:
/* DEBUG LOCATION MENU */
	$locations = get_registered_nav_menus();
	print_r($locations);
ho visualizzato le location registrate per i mie menu.

Successivamente ho editato il codice sopra così:
Codice:
function my_nav_menu_profile_link($menu, $args) {  
    if (is_user_logged_in() and $args->theme_location == 'main-menu')
	{
		$user_data = bbp_get_user_profile_url( get_current_user_id() );
        $profilelink = '<li><a href="'.$user_data.'" >Profile</a></li>';
        $menu = $menu . $profilelink;
        return $menu;	
    } else {
        return $menu;
	}
}

add_filter( 'wp_nav_menu_items', 'my_nav_menu_profile_link', 10, 2);
Rimane sempre il problema riguardo la possibilità di inserire il mio item come submenu.

Grazie.
 

felino

Utente Attivo
12 Dic 2013
882
8
18
Aci Catena (Catania)
Risolto!

Tentavo un hook verso la funzione sbagliata, ho agito su wp_nav_menu_objects.

Ecco il codice:
Codice:
function ravs_add_menu_parent_class( $items ) {
		if (is_user_logged_in())
		{
			$link_profile = array (
				'title'            => 'Profilo',
				'menu_item_parent' => 937,
				'ID'               => '34343434343434343434',
				'db_id'            => '34343434343434343434',
				'url'              => bbp_get_user_profile_url( get_current_user_id() ),
			);
			$items[] = (object) $link_profile;
			
			$link_logout = array (
				'title'            => 'Logout',
				'menu_item_parent' => 937,
				'ID'               => '12121212121212121212',
				'db_id'            => '12121212121212121212',
				'url'              => wp_logout_url(),
			);
			$items[] = (object) $link_logout;		
		}
	return $items;    
}

add_filter( 'wp_nav_menu_objects', 'ravs_add_menu_parent_class' );
Magari può essere utile a qualcuno.

;)