Menu par défaut de Wordpress dans la base de données

18

Il y a maintenant 3 menus dans mon wordpress (3.5).

  • Menu principal (par défaut de wp)
  • Menu de pied de page (par défaut de wp)
  • Menu test

Maintenant, j'ai conservé le menu de test par défaut.

Où Wordpress stocke-t-il cette chose?

Je veux savoir où wordpress stocke le menu actuel qui s'affiche dans le frontal.

Hiren Rathod
la source

Réponses:

46

Le menu en lui-même est une taxonomie dans WP. Cela signifie que vous pouvez trouver tous les menus dans le wp_termstableau, en exécutant la requête suivante:

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'élément de menu est un type de publication personnalisé dans WP. Ils sont stockés dans une wp_poststable. Vous pouvez tous les trouver en utilisant cette requête:

SELECT * 
  FROM wp_posts 
 WHERE post_type = 'nav_menu_item';

Les relations entre les menus et les éléments de menu sont stockées dans le wp_term_relationshipstableau. Pour trouver tous les éléments d'un menu spécifique, vous pouvez utiliser cette requête:

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

Les informations sur le menu actuellement sélectionné se trouvent dans le wp_optionstableau sous forme de tableau PHP sérialisé. Par exemple, si nous utilisons le thème TwentyEleven, nous aurons alors un enregistrement dans le wp_optionstableau avec une option_namecolonne égale à theme_mod_twentyelevenet une option_valuecolonne égale à ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}. Ici, vous pouvez voir que le menu term_idégal à 103 est actuellement sélectionné comme "primary"menu.

Le principe clé ici est que nous avons toujours un enregistrement d'options distinct pour chaque thème WP. Ces options ont la même structure de nom: theme_mods_{your-theme-name}.

PS: Pour changer le menu actuel dans le panneau d'administration, allez simplement à Appearance» Menuspage et sélectionnez le menu dont vous avez besoin dans la Theme Locationsboîte de méta:

entrez la description de l'image ici

Eugene Manuilov
la source
Merci pour votre réponse, mais je veux savoir où il stocke le menu qui est par défaut (affiché à l'avant) maintenant.
Hiren Rathod
@HirenRathod J'ai mis à jour ma réponse
Eugene Manuilov
Oui, j'ai eu la réponse. J'utilise le thème hypershot et le menu primery conservé comme menu de test. Il stocke comme ceci 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;}} Ici, i: 27 signifie que 27 est le term_id de wp_terms. Merci @ eugene-manuilov :)
Hiren Rathod
Comment choisiriez-vous les éléments de menu (pages / articles / liens) pour une donnée term_id?
Xeoncross