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_id103 в настоящее время выбрано как "primary"меню.

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

PS: Для изменения текущего меню в панели администратора, просто перейдите Appearance» Menusстраницу и выберите меню нужно в Theme Locationsмета - поле:

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


Спасибо за ваш ответ, но я хочу знать, где он хранит меню, которое по умолчанию (показывает передний конец) сейчас.
Hiren Rathod

@HirenRathod Я обновил свой ответ
Евгений Мануйлов

Да, я получил ответ. Я использую тему гипершота и оставляю простое меню в качестве тестового меню. В нем хранятся такие записи: a: 2: {i: 0; b: 0; s: 18: «nav_menu_locations»; a: 2: {s: 11: «header-menu»; i: 27; s: 11: «нижний колонтитул» -menu "; i: 0;}} Здесь i: 27 означает 27 - это term_id из wp_terms. Спасибо @ eugene-manuilov :)
Hiren Rathod

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