私は1ページのウェブサイトを作っているように。これが私が以前に尋ねた質問です。
私はすべてのページをWP_Queryで呼び出しているので、それは "order by = ASC"であり、 "menu_order"ではなく "メニュー構造による順序"と呼びたいのです。
例:
今度は私はトップに家をしたいと思いますサービスそしてそれからの声。メニュー構造によります。
どうやってそれを達成することができます..助けてください..事前にありがとう!
may WP_Queryはnav_menu_item
で使用できます。これは独自の投稿タイプであるためです。私はこれをやったことがありませんが、多分それはあなたがそれを必要とするように動作するでしょう、一撃の価値があります。他にも3つの可能性があります。
wp_get_nav_menu_items()
と呼ばれる関数があります。これはメニュー項目の配列を返し、ループして表示することができます。使用方法の例を次に示します。 「Gotcha!」がいくつかありますここに:
$item->ID
は、現在のナビゲーション項目IDnotpost_id
です。投稿IDは$item->object_id
になりました。$item->title
は現在のナビゲーション項目のタイトルであり、必ずしもpost_title
ではありませんが、デフォルトでは変更および変更できます。投稿のタイトルを取得する最も信頼できる方法は、object_id
を使用してget_the_title()
関数に渡すことです。$nav_items = wp_get_nav_menu_items( 'Main Menu', array(
'order' => 'ASC', // List ASCending or DESCending
'orderby' => 'title', // Order by your usual, menu_order, post_title, etc. Check WP_Query
'post_type' => 'nav_menu_item', // To be honest, I'm not sure why this is an option, leave it be.
'post_status' => 'publish', // If there are private / draft posts in our menu, don't show them
'output' => ARRAY_A, // Return an Array of Objects
'output_key' => 'menu_order', // Not sure what this does
'nopaging' => true, // Not sure what this does
'update_post_term_cache' => false // Not sure what this does
) );
if( ! empty( $nav_items ) ) {
foreach( $nav_items as $item ) {
echo "{$item->title} - " . get_the_title( $item->object_id );
echo "<br />\n";
}
}
wp_nav_menu()
を使用してメニューを表示し、 Custom Walker Function を渡して出力を変更できます。この例として、実際にメニューを物理メニューに追加せずに、メニュー項目の子ページを自動的にプルすることができます。 チャイルドウォーカークラス
通常、クライアント用のWebサイトを作成するとき、WordPressメニューがあり、ページ属性menu_order
で管理パネルのページ順序もミラーリングします。この方法では、 WP_Query
およびorderby => 'menu_order'
を使用してページをクエリできます
それ以外に、簡単にはorderby => 'My Menu'
はありません。代わりの方法または回避策を見つける必要があります。
Wp_query()の代わりに関数 wp_get_nav_menu_items() を使用して、メニュー構造順で特定のメニューからメニュー項目を取り出すことができます。それが済んだら、あなたは望むようにメニュー項目を一つずつループすることができます(タイプや他の情報でそれらをさらに絞り込むことを含みます)。これは、すべてのページがメニュー内にあることを前提としています(順序を理解するためにそれを使用している場合は、それらが必要になります)。