Il y a 3 menus dans mon wordpress (3.5) maintenant.
Maintenant, j'ai gardé 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 au début.
Menu en lui-même est une taxonomie dans WP. Cela signifie que vous pouvez trouver tous les menus dans la table wp_terms
en lançant 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 la table wp_posts
. 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 la table wp_term_relationships
. 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 la table wp_options
sous forme de tableau sérialisé PHP. Par exemple, si nous utilisons le thème TwentyEleven, nous aurons un enregistrement dans la table wp_options
avec la colonne option_name
égale à theme_mod_twentyeleven
et la colonne option_value
égale à ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}
. Ici, vous pouvez voir que le menu avec term_id
égal à 103 est actuellement sélectionné comme menu "primary"
.
Le principe clé ici est que nous avons toujours un enregistrement d’options séparé pour chaque thème WP. Ces options ont la même structure de noms: theme_mods_{your-theme-name}
.
P.S .: Pour changer le menu actuel dans le panneau d’administration, allez simplement à la page Appearance
"Menus
et sélectionnez le menu dont vous avez besoin dans la méta-boîte Theme Locations
: