El menú en sí mismo es una taxonomía en WP. Significa que puede encontrar todos los menús en la wp_terms
tabla, 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 del menú es un tipo de publicación personalizada en WP. Se almacenan en la wp_posts
tabla. 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 wp_term_relationships
tabla. Para encontrar todos los elementos del menú específico, puede usar 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ú seleccionado actualmente se encuentra en la wp_options
tabla como matriz PHP serializada. Por ejemplo, si usamos el tema TwentyEleven, tendremos un registro en la wp_options
tabla con option_name
columnas iguales theme_mod_twentyeleven
y option_value
columnas iguales a ...;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 "primary"
menú.
El principio clave aquí es que siempre tenemos un registro de opciones separadas para cada tema de WP. Estas opciones tienen la misma estructura nombre: theme_mods_{your-theme-name}
.
PD: Para cambiar el menú actual en el panel de administración, simplemente vaya a la página Appearance
» Menus
y seleccione el menú que necesita en el Theme Locations
cuadro meta:
term_id
?