it-swarm.dev

Menu predefinito di Wordpress nel database

Ci sono 3 menu nel mio wordpress (3.5) ora.

  • Menu principale (predefinito da wp)
  • Menu a piè di pagina (predefinito da wp)
  • Menu di prova

Ora ho mantenuto il menu di test come predefinito.

Dove Wordpress archivia questa cosa?

Voglio sapere dove wordpress memorizza il menu corrente che viene visualizzato nel front-end.

17
Hiren Rathod

Menu di per sé è una tassonomia in WP. Significa che puoi trovare tutti i menu nella tabella wp_terms, eseguendo la seguente query:

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';

L'elemento del menu è il tipo di post personalizzato in WP. Sono memorizzati nella tabella wp_posts. Puoi trovarli tutti utilizzando questa query:

SELECT * 
  FROM wp_posts 
 WHERE post_type = 'nav_menu_item';

Le relazioni tra menu e voci di menu sono memorizzate nella tabella wp_term_relationships. Per trovare tutti gli elementi del menu specifico puoi usare questa query:

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*/;

Le informazioni sul menu attualmente selezionato si trovano nella tabella wp_options come array PHP serializzato. Ad esempio, se utilizziamo il tema TwentyEleven, avremo un record nella tabella wp_options con colonna option_name uguale a theme_mod_twentyeleven e option_value colonna uguale a ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}. Qui puoi vedere che il menu con term_id equivale a 103 è attualmente selezionato come "primary" menu.

Il principio chiave qui è che abbiamo sempre un record di opzioni separate per ogni tema WP. Tali opzioni hanno la stessa struttura del nome: theme_mods_{your-theme-name}.

P.S .: Per cambiare il menu corrente nel pannello di amministrazione, vai alla pagina Appearance "Menus e seleziona il menu che ti serve nella meta box Theme Locations:

enter image description here

43
Eugene Manuilov