mysql - instalando - ¿Dónde se guardan los menús personalizados en la base de datos para Wordpress 3.0?
wordpress español (8)
Cada elemento del menú se guarda en la tabla de publicaciones y la jerarquía / opciones / URL del menú, etc. que pertenecen a estos elementos se almacenan en la tabla postmeta. En la tabla postmeta puede ver la columna post_id que pertenece a los elementos de la tabla de publicaciones.
He estado buscando y buscando en mi base de datos sql en phpmyadmin pero parece que no puedo encontrar dónde se almacenan los menús personalizados en la base de datos. ¿Alguien sabe dónde está almacenado? Tengo un gran menú, básicamente, eso demora una eternidad en crear. Estoy en desarrollo ahora y en lugar de volver a crearlo en producción, quiero intentar copiar el sql para ver si funciona. ¡Gracias!
Cuando se agrega un nuevo menú personalizado, su entrada se agrega a varias tablas.
- tabla:
_term_taxonomy
con una columnataxonomy
y valornav_menu
. - de 1)
term_id
también está en la tabla:_terms
con el título de menú que se muestra en el panel de administración - table:
_term_relationship
contendráterm_texonomy_id
de 1) y conexión a todos los object_id que se vincularán a todas_post
tablassub_menu
tengansub_menu
y debajo del menú de niveles. - table:
_postmeta
contendrá todos los detalles relacionados con el menú y el submenú para cadaobject_id
de la tabla_posts
.
Los elementos del menú de navegación se almacenan en la tabla post_type = ''nav_menu_item''
con post_type = ''nav_menu_item''
.
Los enlaces de menú personalizados están en la tabla wp_postmeta
en "meta_value"
meta_key = _menu_item_url
Los títulos de menú, ID y nombres reales se almacenan en la tabla wp_terms.
Odio toparme con un viejo hilo. Pero si alguien se encuentra con esto como lo hice buscando la respuesta, a partir del WP 3.2
el tipo de post_type
para el menú ahora se llama nav_menu_item
en la tabla wp_posts
. No tenían eso en la página wp, solo tenían nav_menu
. Que no pude encontrar
Quería proporcionar una respuesta más completa y actualizada para las personas que tropiezan con esta publicación como yo. Hay varios lugares en la base de datos que deben verificarse / actualizarse si desea insertar o actualizar manualmente los elementos del menú.
El primer paso es encontrar el contenedor del menú principal. Esto se almacena en wp_terms
. Simplemente busca por name
para el nombre de tu menú. Toma nota de la ID. En mi ejemplo, esto será 33
. Del mismo modo, puede insertar una nueva fila aquí para crear un nuevo menú. La babosa no puede tener espacios en ella. Solo sustituya en -
en cambio.
Ahora vamos a encontrar elementos en ese menú. Esos se almacenan en wp_posts
con un post_type
de nav_menu_item
. No hay nada en esta tabla que lo post_title
a su ID anterior, por lo que tendrá que ir por post_title
. Si el objetivo es insertar un nuevo elemento de menú, con phpMyAdmin puede hacer clic en Copy
en un elemento existente en cualquier menú y cambiar post_title
y post_name
. Ahora tome nota de la identificación del artículo que insertó. El mío es 9179. También sería bueno tomar nota de la identificación del artículo que copiaste (incluso mejor si era del mismo menú) ya que lo usaremos en el próximo paso.
Ahora ve a wp_postmeta
y busca en el campo post_id
el ítem que acabamos de copiar. Esto mostrará todos los campos que deben completarse para obtener la información de nuestro nuevo elemento de menú. Usando phpMyAdmin, copie cada una de esas entradas y cámbielas según sea necesario. _menu_item_menu_item_parent
, _menu_item_target
, y _menu_item_classes
son los campos que muy probablemente necesiten cambios. Y asegúrese de poner la ID de su nuevo artículo (9179) en _menu_item_object_id
.
Después de que todos hayan sido creados, ahora podemos vincular ese elemento del menú a nuestro menú. Necesitamos obtener term_taxonomy_id
de wp_term_taxonomy
. Simplemente busque term_id
usando la ID del primer paso, 33 para mí. El term_taxonomy_id
pasa a ser 33 para mí también. No, necesitamos insertar una nueva fila en wp_term_relationships
. object_id
será tu id. posterior (9179) y term_taxonomy_id
es lo que acabamos de buscar (33).
Ahora su nuevo artículo debería estar en su menú.
$postId = $wpdb->get_var($wpdb->prepare("SELECT post_id FROM `wp_postmeta` WHERE meta_key=''_menu_item_object_id'' AND `meta_value`=''$id''"));
$postIdc = $wpdb->get_var($wpdb->prepare("SELECT post_id FROM `wp_postmeta` WHERE meta_key=''_menu_item_object_id'' AND `meta_value`=''$a[1]''"));
$sql2 = "SELECT * FROM `wp_postmeta` WHERE meta_key=''_menu_item_menu_item_parent'' AND `meta_value`=''$postId''";
$sql2c = "SELECT * FROM `wp_postmeta` WHERE meta_key=''_menu_item_menu_item_parent'' AND `meta_value`=''$postIdc''";