He estado buscando y buscando en mi base de datos sql en phpmyadmin, pero me parece que no puede encontrar donde menús personalizados se almacenan en la base de datos. Alguien sabe donde se guardan? Tengo un gran menú, básicamente, que tarda una eternidad para crear. Estoy ahora en el desarrollo y en lugar de volver a crear en la producción quiero intentar copiar el sql a ver si funciona. Gracias!

InformationsquelleAutor Marc | 2010-09-22

9 Comentarios

  1. 19

    El menú de títulos, IDs, y los nombres se almacenan en el wp_terms tabla.

    • $menu_list = get_terms('nav_menu'); devolverá todos los menús.
    • Esta consulta devuelve sólo el IDENTIFICADOR de menú. Lo de la consulta devuelve todos los elementos del menú con la información suficiente para regenerar el menú?
    • Una vez que tenga el ID del menú, puede ejecutar $wp_menu_items = wp_get_nav_menu_items( $id );
  2. 64

    Al nuevo menú personalizado se añade, en su entrada se agrega en varias tablas.

    1. tabla: _term_taxonomy con una columna taxonomy y valor nav_menu.
    2. de 1) term_id es también en la tabla:_terms con el título de menú que se muestra en el panel de administración
    3. tabla:_term_relationship contendrá term_texonomy_id de 1) y la conexión a todos los object_id que estará vinculado a todos los _post tabla de tener sub_menu y por debajo del nivel de menú.
    4. tabla:_postmeta contendrá todos los detalles de menú y de submenú para cada object_id de _posts tabla.
    • No entiendo como esto no es upvoted. Yo estaba buscando una manera de exportación y de importación de los menús. Sé que mi respuesta. No. Yo voy a hacer de forma manual.
    • Debería aclarar el paso 3 para decir que el object_id de term_relationships es igual que el campo id de wp_post
    • He desinstalado WP Fastest Cache y después de terminar el proceso de desinstalación de la izquierda una entrada en el menú de la izquierda y no puedo encontrar en cualquier parte de las tablas que decir…
  3. 31

    Menú de navegación de los elementos se almacenan en la tabla wp_posts con post_type = 'nav_menu_item'.

    • Sí, como un tipo de mensaje personalizado
    • Gracias Impresionante!
    • Pero, ¿qué tipo de mensaje personalizado?
    • cómo de malo es esto, wordpress aumenta el _posts y _options tablas lanzando todo tipo de cosas hay que deberá ser colocado en una nueva mesa para una mejor gestión de base de datos y la velocidad de carga
    • Sí, la base de datos está muy mal normalizado y esta respuesta es sólo parcialmente correcta. Identifica los objetos que componen el menú, pero no proporciona los valores (por ejemplo, el texto del menú) asociados con el menú. Todavía estoy cavando para intentar encontrar datos.
  4. 14

    Odio a topar un hilo viejo. Pero si alguien se ejecuta en esto como yo lo hice buscando la respuesta, como de WP 3.2 la post_type para el menú de hoy es llamada nav_menu_item en el wp_posts tabla. Ellos no tienen que en la página de wp, que acaba de tener nav_menu. Lo que yo no podía encontrar.

    • Gracias tio! Esta es una gran saber.
  5. 11

    El menú personalizado enlaces están en el wp_postmeta tabla bajo "meta_value"
    meta_key = _menu_item_url

    • Echa un vistazo WordPress Respuestas, de Intercambio de la Pila WordPress pregunta y de la respuesta de sitio. Sería grande si usted podría compartir algunos de sus conocimientos. BTW WordCamp Phoenix fue genial!
    • Hey man! gracias.. he visto yo sólo rara vez se quedan en la pila….. sitios. Que debo intentar pasar el rato allí más a menudo :/ #toobusy
    • para tu información, tengo una cuenta allí: wordpress.stackexchange.com/users/2173/ryno
  6. 5

    Quería ofrecerles un mejor y más completo hasta la fecha de respuesta para la gente que se tropieza en este post como yo lo hice. Hay varios lugares en la base de datos que necesita ser revisado/actualizado si estás queriendo insertar manualmente o actualización de los elementos de menú.

    El primer paso es encontrar el menú principal contenedor. Este es almacenado en wp_terms. Simplemente busque por name para el nombre de su menú. Tomar nota de la ID. En mi ejemplo, este será 33. Asimismo, podría insertar una nueva fila aquí para crear un nuevo menú. La babosa no puede tener espacios. Basta con sustituir en - lugar.

    Ahora vamos a llegar a la búsqueda de elementos en el menú. Esos son almacenados en wp_posts con un post_type de nav_menu_item. No hay nada en esta tabla que enlaza a su ID de arriba, así que tendrás que ir por post_title. Si el objetivo es la inserción de un nuevo elemento de menú, con phpMyAdmin usted puede simplemente haga clic Copy en un elemento existente en cualquier menú y cambiar post_title y post_name. Ahora tome nota de la ID del elemento insertado. La mía es 9179. También será agradable para tomar nota de la ID del elemento que desea copiar (incluso mejor si era desde el mismo menú), ya que vamos a usar en el siguiente paso.

    Ahora ir a wp_postmeta y la búsqueda de la post_id campo para el artículo que acaba de copiar. Esto mostrará todos los campos que deben ser llenados para obtener la información de nuestro nuevo elemento de menú. Usando phpMyAdmin copia de cada una de esas entradas y cambiar según sea necesario. _menu_item_menu_item_parent, _menu_item_target, y _menu_item_classes son los campos que más probable es que tendrá que cambiar. Y asegúrese de que usted está poniendo el ID de tu nuevo artículo (9179) en _menu_item_object_id.

    Después de que esos son todos podemos ahora el lazo que elemento de menú a nuestro menú. Tenemos que obtener el term_taxonomy_id de wp_term_taxonomy. Sólo la búsqueda term_id mediante el ID de el primer paso, 33 para mí. El term_taxonomy_id pasa a ser de 33 para mí. No necesitamos insertar una nueva fila en wp_term_relationships. object_id será su id del post (9179) y term_taxonomy_id es lo que hemos visto hasta (33).

    Ahora tu nuevo artículo debe estar en su menú.

  7. 2

    Cada elemento del menú se guardan en puestos de la tabla y la jerarquía de menús/opciones/url etc. la pertenencia a estos elementos se almacenan en postmeta tabla. En postmeta tabla se puede ver post_id columna perteneciente a puestos de la tabla de elementos.

  8. 0

    Aquí están las secuencias de comandos SQL que utiliza:

    Obtener los menús de la wp_term tabla:

    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'

    Utilizar el term_id para conseguir todos los títulos de menú /enlaces de todos los otros conectado tablas. En mi opinión esto es una terrible relacional de la base de datos. Basta con sustituir el tt.term_id con la suya a partir de la consulta de arriba, de abajo es de 11.

    SELECT p.post_title, p.post_name, p.menu_order, pm.meta_value 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 INNER JOIN wp_postmeta AS pm ON p.Id = pm.post_id WHERE p.post_type = 'nav_menu_item' AND tt.term_id = 11 AND pm.meta_key = '_menu_item_url'
  9. -3
    $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'";
    • Trate de poner un poco más de información en su respuesta. «Código» no nos ayuda a entender el por qué o el cómo esto se refiere a la cuestión.
    • ¿cómo es la respuesta?

Dejar respuesta

Please enter your comment!
Please enter your name here