Meniul implicit WordPress în baza de date

5 ian. 2013, 13:40:09
Vizualizări: 63.7K
Voturi: 22

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.

0
Toate răspunsurile la întrebare 1
4
59

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ă:

Schimbarea meniului în panoul de administrare WordPress

5 ian. 2013 13:56:52
Comentarii

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

Hiren Rathod Hiren Rathod
5 ian. 2013 14:04:06

@HirenRathod Am actualizat răspunsul meu

Eugene Manuilov Eugene Manuilov
5 ian. 2013 14:23:45

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 :)

Hiren Rathod Hiren Rathod
6 ian. 2013 21:13:48

Cum ai selecta elementele de meniu (pagini/articole/legături) pentru un anumit term_id?

Xeoncross Xeoncross
19 sept. 2015 04:26:47