web-dev-qa-db-ja.com

メニューブランチ内のオブジェクトのIDを取得する方法

メニューを表示するとき(または メニューの分岐を表示することについての問題のようにメニューの分岐 )、すべてのメニュー項目の内容を印刷することは可能ですか?

enter image description here

About Usをクリックすると、新しいページにそのすべての子リンクのコンテンツが表示されます。

だから基本的に私はそれらの記事/ページのIDを取得して私のWP Queryの中でそれらを使う方法を探しています。

6
daniel.tosaba

私は枝からリンクされた答えから関数を再利用しているので、ゼロからサポートロジックを書くのが面倒です:

/**
 * 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