回答:
メニュー自体は、WPの分類法です。wp_terms
次のクエリを実行することで、テーブル内のすべてのメニューを検索できることを意味します。
SELECT *
FROM wp_terms AS t
LEFT JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id
WHERE tt.taxonomy = 'nav_menu';
メニュー項目は、WPのカスタム投稿タイプです。それらはwp_posts
テーブルに保存されます。次のクエリを使用して、それらすべてを見つけることができます。
SELECT *
FROM wp_posts
WHERE post_type = 'nav_menu_item';
メニューとメニュー項目の関係はwp_term_relationships
テーブルに保存されます。特定のメニューのすべてのアイテムを検索するには、次のクエリを使用できます。
SELECT p.*
FROM wp_posts AS p
LEFT JOIN wp_term_relationships AS tr ON tr.object_id = p.ID
LEFT JOIN wp_term_taxonomy AS tt ON tt.term_taxonomy_id = tr.term_taxonomy_id
WHERE p.post_type = 'nav_menu_item'
AND tt.term_id = /*your menu ID*/;
現在選択されているメニューに関する情報はwp_options
、シリアル化されたPHP配列として表にあります。我々はTwentyElevenのテーマを使用している場合たとえば、我々はレコードを持つことになりますwp_options
と、テーブルoption_name
の列がに等しいtheme_mod_twentyeleven
とoption_value
列がに等しいです...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}
。ここでterm_id
、103に等しいメニューが現在"primary"
メニューとして選択されていることがわかります。
ここでの重要な原則は、WPテーマごとに常に個別のオプションレコードがあることです。このようなオプションの名前構造は同じですtheme_mods_{your-theme-name}
。
PS:管理パネルの現在のメニューを変更するには、Appearance
» Menus
ページに移動し、Theme Locations
メタボックスで必要なメニューを選択します。
term_id
か?