私はバックエンド用のカスタムメニューハンドラを作りました。 CMS Page Order に基づいてドラッグドロップで並べ替えます。
現在の問題は、wp_nav_menuをデフォルト以外の方法でソートすることは不可能であるように思われるということです、それは本当に本当でしょうか?
Appearance - > Menusを選択して注文メニューを配置すると、各メニュー項目のmenu_orderが更新されます。
メニューを表示するクエリのorderbyパラメータを変更するには、pre_get_postsを使用してそれを変更します。例:
add_action( 'pre_get_posts', 'wpse_sort_nav' );
function wpse_sort_nav( $query ) {
if ( $query->is_main_query() && get_query_var( 'post_type' ) == 'nav_menu_item' )
$query->set( 'orderby', 'ID' );
}
IDとmenu_orderは、デフォルトの投稿テーブルを使用して並べ替えるための唯一の実際のオプションです。タイトルはなく、post_nameはIDと同じです。
各nav_menu_itemに格納されているメタデータを使用して、pre_get_postsフィルタに追加のパラメータを追加できます。
ナビゲーションメニューのメタデータ:
_menu_item_menu_item_parent
_ menu_item_type
_ menu_item_object_id
_ menu_item_object
_ menu_item_target
_ menu_item_classes _menu_item_xfn
_ menu_item_url