Menu predefinito di WordPress nel database

5 gen 2013, 13:40:09
Visualizzazioni: 63.7K
Voti: 22

Ho 3 menu nel mio WordPress (3.5) attualmente.

  • Menu principale (predefinito da wp)
  • Menu footer (predefinito da wp)
  • Menu di test

Ora ho impostato il menu di test come predefinito.

Dove WordPress memorizza questa informazione?

Vorrei sapere dove WordPress memorizza l'informazione sul menu corrente che viene visualizzato nel frontend.

0
Tutte le risposte alla domanda 1
4
59

Il menu in sé è una tassonomia in WordPress. Ciò 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';

Gli elementi del menu sono un tipo di post personalizzato in WordPress. 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 i menu e gli elementi del menu sono memorizzate nella tabella wp_term_relationships. Per trovare tutti gli elementi di un 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 = /*ID del tuo menu*/;

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 la colonna option_name uguale a theme_mod_twentyeleven e la colonna option_value uguale a ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}. Qui puoi vedere che il menu con term_id uguale a 103 è attualmente selezionato come menu "primary".

Il principio chiave qui è che abbiamo sempre un record di opzioni separato per ogni tema WordPress. Queste opzioni hanno la stessa struttura del nome: theme_mods_{nome-del-tuo-tema}.

P.S.: Per cambiare il menu corrente nel pannello di amministrazione, basta andare nella pagina Aspetto » Menu e selezionare il menu desiderato nel box meta Posizioni del tema:

Schermata delle posizioni del menu nel pannello di amministrazione WordPress

5 gen 2013 13:56:52
Commenti

Grazie per la tua risposta ma vorrei sapere dove memorizza il menu che è predefinito (mostrato al front end) ora.

Hiren Rathod Hiren Rathod
5 gen 2013 14:04:06

@HirenRathod Ho aggiornato la mia risposta

Eugene Manuilov Eugene Manuilov
5 gen 2013 14:23:45

Sì, ho ottenuto la risposta. Sto usando il tema hypershot e ho impostato il menu principale come menu di test. Viene memorizzato così 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 che 27 è il term_id da wp_terms. Grazie @eugene-manuilov :)

Hiren Rathod Hiren Rathod
6 gen 2013 21:13:48

Come selezioneresti le voci di menu (pagine/articoli/collegamenti) per un dato term_id?

Xeoncross Xeoncross
19 set 2015 04:26:47