データベース内のWordpressのデフォルトメニュー


18

現在、私のwordpress(3.5)には3つのメニューがあります。

  • メインメニュー(wpからのデフォルト)
  • フッターメニュー(wpからのデフォルト)
  • テストメニュー

現在、デフォルトでテストメニューを保持しています。

Wordpressはこのことをどこに保存しますか?

フロントエンドに表示されている現在のメニューに関するwordpressの保存場所を知りたい。

回答:


46

メニュー自体は、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_twentyelevenoption_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メタボックスで必要なメニューを選択します。

ここに画像の説明を入力してください


お返事ありがとうございますが、デフォルト(フロントエンドに表示)であるメニューの保存場所を知りたいと思います。
ハイレンラソッド

@HirenRathod私は答えを更新しました
ユージン

はい、答えが得られました。私はハイパーショットテーマを使用しており、テストメニューとして基本メニューを保持しています。このように格納されますa:2:{i:0; b:0; s:18: "nav_menu_locations"; a:2:{s:11: "header-menu"; i:27; s:11: "footer -menu "; i:0;}}ここで、i:27は27がwp_termsのterm_idであることを意味します。おかげで@ユージン・manuilov :)
Hiren Rathod

特定のメニュー項目(ページ/投稿/リンク)をどのように選択しますterm_idか?
Xeoncross
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.