Le menu en lui-même est une taxonomie dans WP. Cela signifie que vous pouvez trouver tous les menus dans le wp_terms
tableau, 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_posts
table. 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_relationships
tableau. 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_options
tableau sous forme de tableau PHP sérialisé. Par exemple, si nous utilisons le thème TwentyEleven, nous aurons alors un enregistrement dans le wp_options
tableau avec une option_name
colonne égale à theme_mod_twentyeleven
et une option_value
colonne é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
» Menus
page et sélectionnez le menu dont vous avez besoin dans la Theme Locations
boîte de méta:
term_id
?