web-dev-qa-db-fra.com

Déterminer à quel emplacement de thème un wp_get_nav_menu_items est destiné

Existe-t-il un moyen de déterminer l’emplacement du thème d’un menu lors de sa modification à l’aide du crochet de filtre wp_get_nav_menu_items?

J'aimerais seulement ajouter des éléments à certains menus et je ne veux pas dépendre de l'ID ou du nom du menu.

3
Daniel A. White

Pas sûr que ce soit le moyen le plus simple, mais vous pouvez conditionnellement ajouter le filtre uniquement à l'emplacement que vous souhaitez modifier via le filtre wp_nav_menu_args lorsque wp_nav_menu est appelé, puis supprimez immédiatement le filtre afin qu'il ne soit pas appliqué aux autres menus.

function wpa108544_nav_menu_args( $args ){
    // check if it's the location we want the filter applied to
    if( 'primary' == $args['theme_location'] )
        add_filter( 'wp_get_nav_menu_items', 'wpa108544_get_nav_menu_items', 10, 3 );

    return $args;
}
add_filter( 'wp_nav_menu_args', 'wpa108544_nav_menu_args' );


function wpa108544_get_nav_menu_items( $items, $menu, $args ){
    // remove the filter
    remove_filter( current_filter(), __FUNCTION__, 10, 3 );

    // do your menu manipulation stuff here
}
2
Milo