Menú predeterminado de WordPress en la base de datos

5 ene 2013, 13:40:09
Vistas: 63.7K
Votos: 22

Hay 3 menús en mi wordpress(3.5) ahora.

  • Menú principal (predeterminado de wp)
  • Menú de pie de página (predeterminado de wp)
  • Menú de prueba

Ahora he mantenido el menú de prueba como predeterminado.

¿Dónde almacena WordPress esta información?

Quiero saber dónde almacena WordPress la información sobre el menú actual que se está mostrando en el frontend.

0
Todas las respuestas a la pregunta 1
4
59

El menú en sí mismo es una taxonomía en WP. Esto significa que puedes 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';

Los items de menú son un tipo de post personalizado en WP. Se almacenan en la tabla wp_posts. Puedes encontrarlos todos usando esta consulta:

SELECT * 
  FROM wp_posts 
 WHERE post_type = 'nav_menu_item';

Las relaciones entre menús e items de menú se almacenan en la tabla wp_term_relationships. Para encontrar todos los items de un menú específico puedes 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 = /*tu ID de menú*/;

La información sobre el menú actualmente seleccionado se encuentra en la tabla wp_options como un array PHP serializado. Por ejemplo, si usamos el tema TwentyEleven, entonces tendremos un registro en la tabla wp_options con la columna option_name igual a theme_mod_twentyeleven y la columna option_value igual a ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}. Aquí puedes 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_{nombre-de-tu-tema}.

P.D.: Para cambiar el menú actual en el panel de administración, solo ve a la página Apariencia » Menús y selecciona el menú que necesitas en el meta caja Ubicaciones del Tema:

Menú de ubicaciones del tema en WordPress

5 ene 2013 13:56:52
Comentarios

Gracias por tu respuesta pero quiero saber dónde guarda el menú que está por defecto (mostrando al front end) ahora.

Hiren Rathod Hiren Rathod
5 ene 2013 14:04:06

@HirenRathod He actualizado mi respuesta

Eugene Manuilov Eugene Manuilov
5 ene 2013 14:23:45

Sí, obtuve la respuesta. Estoy usando el tema hypershot y dejé el menú primario como menú de prueba. Se almacena así: 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;}} Aquí i:27 significa que 27 es el term_id de wp_terms. Gracias @eugene-manuilov :)

Hiren Rathod Hiren Rathod
6 ene 2013 21:13:48

¿Cómo seleccionarías los elementos del menú (páginas/entradas/enlaces) para un term_id determinado?

Xeoncross Xeoncross
19 sept 2015 04:26:47