web-dev-qa-db-fra.com

Comment afficher le contenu conditionnel de wp_nav_menu ($ args) renvoie quelque chose

J'ai une barre latérale qui affiche les liens enfants de la page actuelle (en utilisant ce solotuin par https://wordpress.stackexchange.com/a/2809/27414 ) qui fonctionne parfaitement.

S'il y a des liens enfants à afficher dans la barre latérale, j'aimerais lui donner un titre tel que "Est aussi cette section".

J'ai essayé ce qui suit qui n'a pas fonctionné:

if (wp_nav_menu( $args )){
    echo "Also in this section";
}

Merci

1
Abs

Utilisez has_nav_menu pour vérifier si un menu a été assigné à un emplacement

<?php
if ( has_nav_menu( $location ) ) {
     echo "Also in this section";
}
?>

http://codex.wordpress.org/Function_Reference/has_nav_menu

Pour des vérifications plus poussées, vous devrez appeler wp_get_nav_menu_items et traiter les éléments qu’il renvoie pour voir s’ils sont des enfants.

Voici un exemple de sortie d'un menu qui montre comment utiliser sa sortie:

// Get the nav menu based on $menu_name (same as 'theme_location' or 'menu' arg to wp_nav_menu)
// This code based on wp_nav_menu's code to get Menu ID from menu slug

$menu_name = 'custom_menu_slug';

if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] ) ) {
    $menu = wp_get_nav_menu_object( $locations[ $menu_name ] );

    $menu_items = wp_get_nav_menu_items($menu->term_id);

    $menu_list = '<ul id="menu-' . $menu_name . '">';

    foreach ( (array) $menu_items as $key => $menu_item ) {
        $title = $menu_item->title;
        $url = $menu_item->url;
        $menu_list .= '<li><a href="' . $url . '">' . $title . '</a></li>';
    }
    $menu_list .= '</ul>';
} else {
    $menu_list = '<ul><li>Menu "' . $menu_name . '" not defined.</li></ul>';
}
// $menu_list now ready to output

Il est essentiel de noter qu'un menu de navigation est composé d'éléments de menu de navigation et que ces éléments de menu sont des types de publication personnalisés . Utilisez l'association parent-enfant pour déterminer la profondeur, comme pour les pages et les publications.

2
Tom J Nowell