Menú predeterminado de Wordpress en la base de datos

18

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 por defecto.

¿Dónde almacena Wordpress esta cosa?

Quiero saber dónde se almacena WordPress sobre el menú actual que se muestra en el front-end.

Hiren Rathod
fuente

Respuestas:

46

El menú en sí mismo es una taxonomía en WP. Significa que puede encontrar todos los menús en la wp_termstabla, 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_poststabla. 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_relationshipstabla. 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_optionstabla como matriz PHP serializada. Por ejemplo, si usamos el tema TwentyEleven, tendremos un registro en la wp_optionstabla con option_namecolumnas iguales theme_mod_twentyeleveny option_valuecolumnas iguales a ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}. Aquí puede ver que el menú con term_idigual 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» Menusy seleccione el menú que necesita en el Theme Locationscuadro meta:

ingrese la descripción de la imagen aquí

Eugene Manuilov
fuente
Gracias por su respuesta, pero ahora quiero saber dónde almacena el menú predeterminado (que se muestra en el front-end).
Hiren Rathod
@HirenRathod He actualizado mi respuesta
Eugene Manuilov
Sí, recibí la respuesta. Estoy usando el tema de hipershot y mantuve el menú principal como menú de prueba. 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
¿Cómo seleccionaría los elementos del menú (páginas / publicaciones / enlaces) para un determinado term_id?
Xeoncross