Una base de datos constituye la parte más importante de un Sistema de Gestión de Contenidos. Y en ocasiones esa base de datos puede corromperse 🙁 . WordPress utiliza su base de datos para almacenar y recuperar información cuando sea necesario.
En esta entrada te proveemos de una visión general del almacenamiento de datos que utiliza WordPress:
Introducción a la Base de Datos de WordPress
El usuario promedio probablemente nunca tendrá que enfocarse a la base de datos de WordPress. Sin embargo, si estás pensando en convertirte en un «experto» de WordPress, es importante tener los conocimientos necesarios sobre la base de datos y su funcionamiento. Además, es necesario realizar algunos ajustes a la base de datos para personalizar WordPress y para respaldar y/o restaurar un sitio web. Por ejemplo, el cambio de las credenciales de inicio de sesión, o incluso la eliminación de un plugin defectuoso, de una plantilla o tema roto, cuando el dashboard (panel de control) es inestable – todas estas tareas se puede realizar accediendo a la base de datos. Por lo tanto, es evidente que la base de datos es el componente más importante en tu instalación de WordPress.
Comenzaremos con una descripción general de la base de datos de WordPress – su estructura, las tablas principales, taxonomías, y así sucesivamente. También hablaremos de algunas «queries» (consultas) para gestionar y optimizar la base de datos. En resumen, esta entrada no sólo te ayudará a entender un poco más la base de datos de WordPress, también te explicará ciertos pasos y métodos que pueden ayudarte a mantener un funcionamiento óptimo de la base de datos de tu sitio web.
[box type=»note» border=»full» icon=»none»]
Antes de empezar, es importante señalar que sólo debes realizar ajustes y modificaciones a la base de datos sólo después de haber hecho una copia de seguridad, y debes ser consciente de los cambios que estás realizando.[/box]
wp-config.php y la Base de Datos de WordPress
Cuando abres el archivo «wp-config.php» de tu instalación de WordPress, observarás que la parte de base de datos contiene líneas que lucen así:
La mayor parte de la información contenida en el archivo «wp-config.php» se explica por si misma – debes escribir tu nombre de usuario MySQL, contraseña, hostname y así sucesivamente. La codificación de caracteres es UTF-8, y no es necesario cambiarlo, pero si tu sitio se encuentra en un idioma o alfabeto que requiere codificación especial, tendrás que modificar la codificación de caracteres.
Nunca omitas la generación de las «Claves únicas de autentificación«, para relaizar esta tarea visita: api.wordpress.org/secret-key/1.1/salt/.
Después de eso, si te desplazas al final del archivo: «wp-config.php«, podrás observar el valor del prefijo de tabla:
Como indican los comentarios en el archivo: «puedes mantener varias instalaciones, dando a cada una un prefijo de tabla única«. De forma predeterminada, se establece en «wp_» Sin embargo, por cuestiones de seguridad, tiene sentido cambiar el prefijo de la tabla de «wp_» a cualquier prefijo de tu elección, esto ayudará a evitar el acceso de piratas a tu base de datos.
Estructura de la Base de Datos de WordPress
La siguiente imagen es una captura de pantalla de cómo luce una típica base de datos de WordPress (utilizando phpMyAdmin):
Sin considerar «wp-lockdown» y «wp_login_fails«, tenemos 11 tablas en la base de datos.
wp_commentmeta y wp_comments
Ambas tablas contienen los datos relacionados a los comentarios. wp_commentmeta se refiere a los metadatos acerca de cada comentario, estos datos son los del usuario que publicó el mensaje. En tu panel de control de WordPress, la sección en cuestión es: «Comentarios«.
wp_links
Esta tabla se encarga de los enlaces, a los que puedes acceder en tu panel de control de WordPress desde el menú lateral: «Enlaces«.
wp_postmeta
Como su nombre lo indica, esta tabla contiene metadatos sobre las entradas y artículos de tu sitio web. A menudo, algunos plugins suelen añadir campos a esta tabla. La sección correspondiente en tu panel de control es la página: «Entradas«.
wp_usermeta y wp_users
Estas dos tablas contienen información sobre las distintas cuentas de usuarios asociadas a tu sitio web y sus metadatos. La sección correspondiente en tu panel de control es: «Usuarios«.
wp_posts
Al igual que con cualquier software de CMS, el core (núcleo) de un sitio web con WordPress se compone de posts o entradas. La tabla wp_posts se encarga de las entradas, de las páginas, e incluso de elementos del menú de navegación. Por tanto, las secciones correspondientes en tu panel de control son: «Entradas«, «Páginas» y «Menús«.
wp_options
WordPress guarda tus ajustes de configuración en wp_options. Básicamente, todo lo que se puede hacer desde la sección «Ajustes» en tu panel de control se relaciona con la tabla wp_options (incluidos también algunos ajustes y configuraciones de menú «Apariencia«, como los widgets).
Taxonomías y Términos
WordPress tiene tres tablas para manejar taxonomías personalizadas y términos: wp_terms, wp_term_relationship y wp_term_taxonomy.
Entonces, ¿qué es exactamente un «término»? Básicamente WordPress llama «términos» a entidades como las categorías, etiquetas, etc. Todos estos elementos son considerados por WordPress como «términos». Por lo tanto, «Uncategorized», la categoría por defecto también es un «término».
¿Y dónde se almacenan todos esos términos? Todos los términos son almacenados en la tabla wp_terms.
De la misma forma, la tabla wp_term_taxonomy contiene las taxonomías de los términos de wp_terms. Básicamente, una taxonomía es una forma de agrupar elementos. Y por último, la tabla wp_term_relationship que se encarga de las entradas, páginas, o enlaces que se relacionan con los «términos» de la tabla wp_terms.
Hasta aquí nos hemos familiarizado con la estructura de la base de datos de WordPress, con las tablas contenidas en la base de datos, y la función que cada tabla desempeña. Si deseas obtener información más específica visita el Codex de WordPress.
Trabajar con la Base de Datos de WordPress
Ahora vamos a centrar nuestra atención en algunas tareas comunes que podemos realizar con la base de datos. Pasaremos por alto algunas tareas tales como el manejo de SQL, insertar y actualizar datos, obtener filas y columnas, y funciones similares.. hay una gran cantidad de información en la web y desde el Codex de WordPress. Echemos un vistazo pues a las formas en que podemos lograr ciertas tareas como usuarios administradores utilizando la base de datos de WordPress, en lugar del utilizar el panel de control de nuestro sitio web.
» Optimizar la Base de Datos
Cuando publicas información en tu sitio, cargas imágenes, editas páginas, administras los comentarios, etc.. esas acciones se acumulan en la base de datos y se reflejan en su rendimiento. Para optimizar tu base de datos, utiliza la siguientes consulta:
» Transferir Entradas de un Usuario a Otro
Si deseas transferir entradas o artículos para atribuirlos a cualquier otro usuario, puedes utilizar la siguiente consulta (necesitarás los nombres de usuario de ambas cuentas):
» Eliminar Comentarios a Granel
Puedes utilizar esta consulta para eliminar todos los comentarios no aprobados:
» Desactivar Todos los Plugins
¿Te ha sucedido que accidentalmente activas demasiados plugins?, ¿o deseas realizar algunos cambios a tu sitio web y necesitas desactivar todos los plugins? Pues bien, utiliza la siguiente consulta que te permitirá desactivar todos los plugins en tu sitio web:
» Desactivar los Comentarios en Entradas Antiguas
Si por ejemplo deseas desactivar los comentarios de las entradas con una fecha determinada (digamos, 5 de Mayo de 2011 ), utiliza la siguiente consulta:
» Cambiar el Nombre de Usuario
Si deseas cambiar el nombre de usuario (por ejemplo: «abcd»), utiliza esta consulta:
Comentarios finales
En caso de que no quieras ensuciarte las manos :), puedes considerar el uso de plugins que permiten la administración de la base de datos de WordPress, como por ejemplo: WP-DBManager o WP-Optimize.
Consulta: puedo tener más de una base de datos en mi WP? es decir, instalo WP y cuando quiero que se instale, cada persona le dará a ese dominio diferentes base de datos. Eso se puede configurar desde wp-config.php? o sólo tiene que ser una base de datos? te explico que quiero hacer un taller para instalar WP y me gustaría practicar con cada uno de mis alumnos para que aprendan a instalar, pero tengo sólo un dominio, pero cada uno se creó su base de datos. Cómo lo hacemos? gracias por la ayuda.
Hola Erik, tal vez quieras utilizar WordPress Network: http://codex.wordpress.org/Create_A_Network 😉
Como puedo saber en que parte o tabla de la base de datos se almacena toda la información de los productos de woocommerce?
Hola Karina, en WooCommerce 1.x las ordenes por ejemplo, se encuentran en «postmeta» y se asocian con un ID específico. En 2.x se incluyen nuevas tablas («wp_woocommerce»), por ejemplo: woocommerce_attribute_taxonomies, woocommerce_termmeta ..
Saludos 🙂
Gracias por la información, me has ahorrando varias horas de trabajo, regreso pronto a postear los resultados de mi investigación, saludos desde Cancún, MXM
Un placer, saludos!
Hola, actualice a la versión de wordpress 3.6 y me causo problemas, muchos errores, lo que hice fue borrar wordpress y montar una versión anterior. Es un desastre.
No quiero comenzar una nueva base para no borrar las entradas que tengo, y mi wordpress muestra una cantidad de imágenes que no están, porque borre la carpeta, que hago. Gracias
Hola @Milton, recuerda siempre hacer un backup completo de tu sitio (FTP y Base de Datos). Si no has modificado las tablas de la base de datos de WordPress esta entrada puede ser tu interés Volver a WordPress 3.4.2 desde WordPress 3.5.
Si eliminaste cualquier elemento de la carpeta «wp-content» y no tienes un respaldo estás en problemas :(. Si tu sitio corre en un servicio de hosting que incluya servicio de respaldo automático, contacta con ellos para descargar la copia de seguridad, o hacer una restauración a un punto anterior donde aún existían esas imágenes.
Muy buena información, me ha aclarado muchas dudas, sinembargo me queda una pendiente y es la siguiente: he descargado la última versión de wordpress y la he instalado en local para desarrollar un nuevo tema para un sitio que tiene una versión antigua de WordPress, por lo que mi duda es ¿como importar la base de datos antigua dentro de la nueva y que guarde los posts y demás información? ¿debo vaciar las tablas de la nueva versión de wordpress para importarle la nueva?
Gracias por su ayuda.
Howdy Alberto 🙂
Puedes importar la base de datos vía «phpMyAdmin«, el proceso se muestra en el paso 4 de nuestra entrada «Mover un sitio local de WordPress a un servidor en línea«, no olvides los ajustes de la URL del sitio local – que en este caso sería: «http://localhost/»
Un saludo 🙂
Los 4 pasos no estan.
Hola @yaret, el enlace tenía una redirección a la imagen destacada, por favor intenta de nuevo: Mover un sitio local de WordPress a un servidor en línea . Un saludo!
Hola, muy buen blog. Quisiera saber si he cometido algún error ya que como eliminé un usuario de wordpress, fui a las tablas de las bases de datos y simplemente cambié el número del usuario a los comentarios que habia hecho con el anterior, ya que al borrarlo quedó como realizado por un anónimo, no por el autor de la entrada. Al parecer funcionó, pero no sé si quede algún error oculto. La verdad no sé nada de programación ni códigos ni nada. Saludos
perdon una pregunta tal vez un poco descabellado, se podra hacer que el que se suscriba sen enviado a una tabla diferente a la de wp_user, es que quiero agregale otras funciones a mi web
Me dices como podria editar el codigo html de una pagina creada atravez del panel de control de wordpress?? no localizo las paginas que se crean atravez del panel de control.
Las publicaciones (Páginas, Entradas, Tipos de Entradas Personalizadas, etc.) creadas en WordPress están disponibles desde el menú lateral izquierdo:
Un saludo!
Buenas tardes,
Como hago para relacionar los post con las categorias desde mysql? (que post pertenecen a X o Y categoría) Se que las tablas usadas son wp_posts y wp_term, pero no encuentro la forma de relacionarlos.
Gracias.
Hola @Fabian, las relaciones de la base de datos de WordPress están disponibles en el «diagrama» del Codex oficial. Un saludo!
Hola buen día
Quisiera saber si alguien tiene conocimiento de en donde puedo cambiar la URL de mis imágenes, ya que tengo muchísimas imágenes y en ese servidor no tengo mucho espacio, así que quisiera cambiarlas a otro servidor que si tengo suficiente espacio, por lo que ha visto, seria en esta tabla: SELECT * FROM dbwordpress.wp_posts where post_mime_type like ‘%image/jpeg%’ and post_name like ‘%tania%’;
ya realice esa consulta y modifique el campo guid, pero al consultar los posts con las imagenes que modifique, las sigue buscando en el servidor que tengo con poco espacio en disco duro.
Saludos y gracias por su ayuda.
Hola,
Tengo dos problemas y no consigo hacer. el primero que tengo casi mil post metidos en dos categorias y quiero que esten solo en una. Alguien podría decirme como es la sentencia sql, porque no consigo ver la correlacion entre los id de los post y los id de las categorias.
otro problema es que tanto en moviles como tablets, mi wp se ve en modo mantenimiento. Supuestamente deberia tener un archivo .manteniance en el directorio raiz, pero yo no tengo nada de eso.
¿como podría quitarlo?
muchas gracias
Hola Mikel,
Puedes utilizar el plugin gratuito «Bulk Move«, es más seguro que hacerlo desde una consulta de SQL. Recuerda hacer una copia de seguridad completa (ftp y base de datos). Un saludo!
Hola , estoy trabajando en un app para mi website hecho en worpress, y estoy importando los posts accediendo a la base de datos, pero no se me ocurre como acceder a las imagenes destacadas de cada post… no se cmo hacer l consulta a la base de datos.
Me podrian ayudar ???
Hola antes de mi pregunta felicitarte por tan buenas publicaciones. Quisiera saber que tanto espacio ocupa la tabla de datos que se hace si se registran clientes en una tienda virtual hecha con woocommerce??
Hola @Roberto,
El espacio en base de datos dependerá de cuantos usuarios registrados/productos gestionará tu instalación de WooCommerce, de ahí la importancia de elegir una infraestructura adecuada (hosting/tráfico) para tu sitio web. Un saludo!
Hola y muchas gracias por la información.
Llevo horas buscando una forma de publicar en WordPress, como 500 artículos que tengo en .doc, de alguna forma automática, esto es que no tenga que crear post por post.
Alguna idea?
Mil gracias
Hola @Alejandro,
Existen algunos plugins que aseguran la conversión de documentos (Word, Google Docs) a entradas de WordPress. Personalmente nunca he usado este tipo de herramientas, por lo que te sugiero ser precavido y revisar con detalle la documentación de cada uno: Docs to WordPress, Mammoth .docx converter … Un saludo!
Como obtengo los stock de los productos, quiero hacer una actualización de stock por Base de datos.
Hola, muy buen blog, Necesito publicar una entrada que tengo en un WP a otros WP. saben como puedo hacer eso? me encontre con el problema de la BD que genera los ids, auto generables, hay forma de modificarlos para generar uno personalizado?