Меню 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_twentyelevenта option_valueстовпцем дорівнює ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}. Тут ви бачите, що term_idв даний час "primary"меню вибрано меню рівним 103 .

Основний принцип тут полягає в тому, що у нас завжди є окремі записи параметрів для кожної теми WP. Такі варіанти мають однакову структуру імені: theme_mods_{your-theme-name}.

PS: Щоб змінити поточне меню на панелі адміністратора, просто перейдіть на сторінку Appearance» Menusта виберіть потрібне меню у Theme Locationsмета-вікні:

введіть тут опис зображення


Дякую за вашу відповідь, але я хочу знати, де в ньому зберігається меню, яке за замовчуванням (показане на передній частині) зараз.
Хірен Ратод

@HirenRathod Я оновив свою відповідь
Євген Мануїлов

Так, я отримав відповідь. Я використовую тему гіпершотів і зберігаю праймер меню в якості тестового меню. Він зберігається так: 2: {i: 0; b: 0; s: 18: "nav_menu_locations"; a: 2: {s: 11: "меню заголовка"; i: 27; s: 11: "footer -menu "; i: 0;}} Тут i: 27 означає, що термін_id від wp_terms. Дякую @ eugene-manuilov :)
Hiren Rathod

Як би ви вибрали пункти меню (сторінки / повідомлення / посилання) для даної term_id?
Xeoncross
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.