El menú en sí mismo es una taxonomía en WP. Esto significa que puede encontrar todos los menús en la tabla wp_terms
, ejecutando la siguiente consulta:
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';
El elemento de menú es un tipo de mensaje personalizado en WP. Se almacenan en la tabla wp_posts
. Puede encontrarlos todos utilizando esta consulta:
SELECT *
FROM wp_posts
WHERE post_type = 'nav_menu_item';
Las relaciones entre los menús y los elementos del menú se almacenan en la tabla wp_term_relationships
. Para encontrar todos los elementos de un menú específico, puede utilizar esta consulta:
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*/;
La información sobre el menú actualmente seleccionado se encuentra en la tabla wp_options
como matriz serializada de PHP. Por ejemplo, si usamos el tema TwentyEleven, entonces tendremos un registro en la tabla wp_options
con la columna option_name
igual a la columna theme_mod_twentyeleven
y option_value
igual a la columna ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}
. Aquí puede ver que el menú con term_id
igual a 103 está actualmente seleccionado como menú "primary"
.
El principio clave aquí es que siempre tenemos un registro de opciones separado para cada tema de WP. Estas opciones tienen la misma estructura de nombre: theme_mods_{your-theme-name}
.
P.S .: Para cambiar el menú actual en el panel de administración, solo vaya a la página Appearance
» Menus
y seleccione el menú que necesita en el cuadro meta Theme Locations
: