問題描述
我的 wordpress(3.5) 現在有 3 個選單。
-
主選單 (預設來自 wp)
-
頁尾選單 (預設來自 wp)
-
測試選單
現在我將測試選單保持預設。
WordPress 在哪裡存放這個東西?
我想知道 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*/;
關於當前選擇選單的資訊位於 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}。
P.S .: 要更改管理面板中的當前選單,只需轉到 Appearance»Menus 頁面,然後在 Theme Locations 元框中選擇所需的選單:
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。
