質問: データベース内のwordpressのデフォルトメニュー 私のwordpress(3.5)には3つのメニューがあります。 メインメニュー(デフォルトはwpから) フッターメニュー(デフォルトはwpから) テストメニュー テストメニューはデフォルトのままにしました。wordpressはこのことをどこに保存していますか?フロントエンドに表示されている現在のメニューについて、ワードプレスがどこに格納しているのか知りたいのです。
回答: メニュー自体は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*/; 現在選択されているメニューに関する情報は、シリアル化されたphp配列としてwp_optionsテーブルにあります。たとえば、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" menuとして選択されていることがわかります。ここでの重要な原則は、wpテーマごとに別々のオプションレコードが常にあるということです。そのようなオプションは同じ名前構造theme_mods_{your-theme-name}を持っています。p.s .:管理パネルの現在のメニューを変更するには、appearance"menusページに行き、theme locationsメタボックスで必要なメニューを選択してください。