Menu predefinito di Wordpress nel database


18

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 prova come predefinito.

Dove memorizza Wordpress questa cosa?

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

Risposte:


46

Menu di per sé è una tassonomia in WP. Significa che puoi trovare tutti i menu nella wp_termstabella, 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';

La voce di menu è il tipo di post personalizzato in WP. Sono memorizzati nella wp_poststabella. Puoi trovarli tutti usando questa query:

SELECT * 
  FROM wp_posts 
 WHERE post_type = 'nav_menu_item';

Le relazioni tra i menu e le voci di menu sono memorizzate nella wp_term_relationshipstabella. Per trovare tutte le voci del menu specifico è possibile utilizzare 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 wp_optionstabella come array PHP serializzato. Ad esempio, se utilizziamo il tema TwentyEleven, avremo un record nella wp_optionstabella con option_namecolonna uguale a theme_mod_twentyelevene option_valuecolonna uguale a ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}. Qui puoi vedere che il menu con term_iduguale a 103 è attualmente selezionato come "primary"menu.

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

PS: per cambiare il menu corrente nel pannello di amministrazione, vai alla Appearance» Menuspagina e seleziona il menu che ti serve nella Theme Locationscasella meta:

inserisci qui la descrizione dell'immagine


Grazie per la tua risposta, ma voglio sapere dove memorizza il menu che è predefinito (mostrando al front-end) ora.
Hiren Rathod,

@HirenRathod Ho aggiornato la mia risposta
Eugene Manuilov il

Sì, ho ottenuto la risposta. Sto usando il tema dell'ipershot e ho mantenuto il menu di primery come menu di prova. Memorizza in questo modo 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;}} Qui i: 27 significa 27 è il term_id di wp_terms. Grazie @ Eugen-Manuilov :)
Hiren Rathod

Come selezioneresti le voci di menu (pagine / post / link) per un dato term_id?
Xeoncross,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.