web-dev-qa-db-fra.com

Comment obtenir des identifiants pour des objets dans une branche de menu?

Est-il possible d’imprimer le contenu de tous les éléments de menu lors de l’affichage du menu (ou d’une branche de menu comme dans la question sur l’affichage des branches de menu )?

enter image description here

Une fois que je clique sur About Us, je souhaite qu'une nouvelle page affiche le contenu de tous ses liens enfants.

Donc, fondamentalement, je cherche un moyen d’obtenir les identifiants de ces publications/pages et de les utiliser dans ma WP Query.

6
daniel.tosaba

Je suis paresseux pour écrire la logique de soutien à partir de zéro, donc je réutilise des fonctions de réponses liées sur des branches:

/**
 * Retrieve IDs of posts in branch of menu.
 *
 * @param mixed  $menu
 * @param string $branch_title
 *
 * @link http://wordpress.stackexchange.com/questions/2802/display-a-portion-branch-of-the-menu-tree-using-wp-nav-menu
 *
 * @return array
 */
function get_post_ids_from_menu_branch( $menu, $branch_title ) {

    $menu_object = wp_get_nav_menu_object( $menu );
    $menu_items  = wp_get_nav_menu_items( $menu_object->term_id );
    $items       = submenu_limit( $menu_items, (object) array( 'submenu' => $branch_title ) );
    $items       = wp_list_filter( $items, array( 'object' => 'post' ) );
    $ids         = wp_list_pluck( $items, 'object_id' );

    return $ids;
}

// example
var_dump( get_post_ids_from_menu_branch( 'Test menu', 'Level 1' ) );
4
Rarst