Aggiungere un item come submenu del menu principale

felino

Utente Attivo
12 Dic 2013
905
10
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
905
10
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
905
10
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.

;)