Meniul implicit WordPress în baza de date
Am 3 meniuri în WordPress-ul meu (3.5) acum.
- Meniu principal (implicit din wp)
- Meniu footer (implicit din wp)
- Meniu test
În prezent, am setat meniul test ca implicit.
Unde stochează WordPress această informație?
Vreau să știu unde stochează WordPress informația despre meniul curent care este afișat în frontend.

Meniu în sine este o taxonomie în WordPress. Aceasta înseamnă că puteți găsi toate meniurile în tabelul wp_terms
, rulând următoarea interogare:
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';
Elementul de meniu este un tip personalizat de postare în WordPress. Acestea sunt stocate în tabelul wp_posts
. Puteți găsi toate elementele de meniu utilizând această interogare:
SELECT *
FROM wp_posts
WHERE post_type = 'nav_menu_item';
Relațiile dintre meniuri și elementele de meniu sunt stocate în tabelul wp_term_relationships
. Pentru a găsi toate elementele unui anumit meniu, puteți folosi această interogare:
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 = /*ID-ul meniului dvs.*/;
Informațiile despre meniul selectat în prezent sunt localizate în tabelul wp_options
ca un array PHP serializat. De exemplu, dacă folosim tema TwentyEleven, atunci vom avea o înregistrare în tabelul wp_options
cu coloana option_name
egală cu theme_mod_twentyeleven
și coloana option_value
egală cu ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}
. Aici puteți vedea că meniul cu term_id
egal cu 103 este selectat în prezent ca meniu "primary"
.
Principiul cheie aici este că avem întotdeauna o înregistrare separată de opțiuni pentru fiecare temă WordPress. Astfel de opțiuni au aceeași structură de denumire: theme_mods_{numele-temei-dvs.}
.
P.S.: Pentru a schimba meniul curent în panoul de administrare, accesați pagina Aspect
» Meniuri
și selectați meniul dorit în căsuța meta Locații temă
:

Mulțumesc pentru răspuns, dar vreau să știu unde este stocat meniul care este implicit (afișat în front-end) acum.

Da, am primit răspunsul. Folosesc tema Hypershot și am setat meniul principal ca "test menu". Este stocat astfel: 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;}} Aici i:27 înseamnă că 27 este term_id din wp_terms. Mulțumesc @eugene-manuilov :)
