En la Parte 1 de esta serie, demostré cómo instalar WordPress localmente y cómo importar una base de datos de WordPress a Vertabelo. En este artículo, veremos más de cerca las tablas en la base de datos de WordPress.
Un vistazo rápido al modelo de base de datos de WordPress y al panel
En la parte anterior, importé la base de datos de WordPress a nuestra herramienta de modelado de bases de datos en línea. Para que conste, la estructura de la base de datos es la siguiente:
Hay un par de hechos importantes sobre el modelo de base de datos de WordPress que debe comprender antes de comenzar:
- Cada sitio de WordPress usa exactamente la misma estructura de base de datos. Contiene 11 tablas y cada sitio de WordPress las usa en segundo plano. La mayoría de los complementos de WordPress también usan la base de datos sin ningún cambio en el modelo de la base de datos. El modelo tiene que ser lo suficientemente flexible para acomodar todos los diferentes complementos. Por supuesto, los creadores de complementos pueden agregar tablas personalizadas para complementos específicos si la estructura de datos es significativamente diferente o si su complemento almacena grandes cantidades de datos.
- La base de datos de WordPress carece de restricciones de clave externa . Esto se debe a que WordPress utiliza el motor de almacenamiento MyISAM, que no admite claves externas. Las tablas solucionan esto al tener atributos que almacenan valores de tipo "clave externa" desconectados, por lo que la base de datos no verificará la restricción de clave externa. Por ejemplo, el
post_author
atributo en elwp_posts
la tabla es una "referencia" al atributo "ID" enwp_users
mesa. - La mayoría de las tablas utilizan una clave principal de una sola columna. Se denominan simplemente "ID" (en el
wp_users
y loswp_posts
tabla), ometa_id
/umeta_id
(en las metatablas:wp_postmeta
,wp_commentmeta
ywp_usermeta
), o una combinación del nombre de la tabla y el sufijo “_id” (todas las demás tablas). La única excepción a estas reglas son laswp_term_relationships
tabla, donde la clave principal consta de dos atributos:object_id
yterm_taxonomy_id
. Los atributos que son clave principal o parte de una clave principal son del tipo bigint(20). Las claves primarias de atributo único también tienen la propiedad de incremento automático establecida en "Sí".
Publicaciones y páginas
La razón principal para usar WordPress es crear y manipular contenido y presentarlo al público. Para ello, WordPress nos proporciona dos tipos de contenido:Páginas y Publicaciones .
Páginas se utilizan para mostrar contenido estático . No usan etiquetas o categorías y no se enumeran por fecha. Además, no permiten comentarios ni compartir en las redes sociales. Las páginas pueden tener subpáginas. Sobre nosotros las páginas son buenos ejemplos de este tipo.
Por otro lado, Publicaciones se enumeran por fecha y se pueden organizar mediante categorías y etiquetas . Las publicaciones se pueden utilizar en fuentes RSS, gracias a su orden cronológico. Las publicaciones no pueden tener "subpublicaciones", pero es posible compartir comentarios y compartir en las redes sociales. Las publicaciones son esencialmente publicaciones de blog. Esto es comprensible, ya que WordPress evolucionó a partir de una plataforma de blogs.
La tabla principal detrás del contenido en cualquier página de WordPress se llama wp_posts
:
WordPress usa el wp_posts
tabla para almacenar páginas, publicaciones y archivos adjuntos. Podemos ver esta tabla como el núcleo de nuestra página, el lugar donde se almacena la mayor parte del contenido. Es importante señalar que los archivos adjuntos en realidad se almacenan en el disco y el registro en el wp_posts
la tabla guarda más información al respecto (quién lo subió y cuándo, etc.).
Los campos en el wp_posts
tabla son:
post_author
– una referencia a loswp_users
tabla, que indica el autor de la publicación.post_date
– la fecha y la hora en que se insertó el registro en la tabla.post_date_gmt
– la fecha y hora GMT/UTC cuando se insertó un registro en la tabla.post_content
– el contenido real de la publicación.post_title
– el título de la publicación.post_excerpt
– un resumen del contenido.post_status
– el estado actual de la publicación. WordPress utiliza 8 estados predeterminados:"Publicar", "Futuro", "Borrador", "Pendiente", "Privado", "Papelera", "Borrador automático" y "Heredar".comment_status
– activa y desactiva los comentarios en una sola publicación o en una página completa. Hay dos valores posibles:"abierto" y "cerrado".ping_status
– identifica si una publicación permite pingbacks y trackbacks. Me gustacomment_status
, solo puede contener los valores "abierto" y "cerrado".post_password
– la contraseña utilizada para ver la publicación (opcional).post_name
– la URL legible por humanos de unpost_title
.to_ping
– una lista de URL a las que WordPress debe enviar pingbacks, delimitada por "\n".pinged
– una lista de URL a las que WordPress ha enviado pingbacks, delimitada por "\n".post_modified
– la fecha y hora más reciente en que se modificó una publicación.post_modified_gmt
– la fecha GMT/UTC parapost_modified
.post_content_filtered
– utilizado por complementos para almacenar en caché costosas transformaciones de contenido de publicaciones.post_parent
– hace referencia a la publicación principal.guid
– Identificador único global para una publicación; su URL permanente.menu_order
– utilizado para ordenar contenido.post_type
– el tipo de registro. Puede contener los valores "publicación", "página", "archivo adjunto" o tipos personalizados definidos por el usuario.post_mime_type
– el tipo de archivos cargados definido solo para publicaciones conpost_type = attachment
. Puede contener valores como "imagen", "aplicación/pdf" y "aplicación/msword".comment_count
– el número de comentarios, pingbacks y trackbacks de la publicación.
Aquí hay una instantánea de wp_posts
después de agregar la página "Acerca de Nikola Tesla":
Cuando echamos un vistazo a los wp_posts
tabla, podemos ver algunas versiones de nuestra página. El registro con el ID = 1
tiene post_status = publish
, lo que significa que la publicación es visible para todos. El comment_status = closed
y ping_status = closed
indica que los comentarios y pings están deshabilitados para esta publicación.
Cualquier información adicional sobre publicaciones y páginas se guarda en el wp_postmeta
tabla:
Las columnas de esta tabla son las siguientes:
meta_id
– la clave principal de la tabla.post_id
– una referencia awp_posts
mesa.meta_key
– una descripción de unmeta_value
atributo.meta_value
– el valor real almacenado.
El wp_postmeta
la tabla es donde se encuentra toda la información que no se puede guardar en wp_posts
se almacena la tabla. Se almacena como pares clave-valor, una técnica que a menudo se denomina entidad-atributo-valor (EAV). La tabla puede ser utilizada por complementos para necesidades personalizadas.
Taxonomías de WordPress
Taxonomía es una palabra elegante que básicamente se refiere a agrupar cosas. WordPress tiene un par de taxonomías integradas para agrupar publicaciones. Por ejemplo, categorías y etiquetas son taxonomías integradas de WordPress. También puede agregar sus propias taxonomías personalizadas a WordPress.
Las taxonomías y sus términos se guardan en tablas llamadas wp_terms
, wp_term_taxonomy
y wp_term_relationships
.
Los wp_terms
tabla almacena una lista de términos utilizados para clasificar objetos en su sitio de WordPress:
Esta tabla contiene todos los nombres de etiquetas y categorías, así como los términos de nuestras taxonomías personalizadas. Los atributos son los siguientes:
term_id
– la clave principal de la tabla.name
– el nombre del término.slug
– la URL dename
.term_group
– utilizado para agrupar términos.
Estos son los contenidos de los wp_terms
tabla:
Los términos se asignan a taxonomías con la ayuda de wp_term_taxonomy
tabla:
Los atributos en la tabla son:
term_taxonomy_id
– la clave principal de la tabla.term_id
– la referencia a loswp_terms
mesa.taxonomy
– el nombre de la taxonomía.description
– una descripción de un término en esa taxonomía en particular.parent
– una referencia al término principal enwp_terms
mesa.count
– el número de objetos en elwp_posts
tabla que utilizan este término en esta taxonomía.
La wp_term_taxonomy
table nos permite reutilizar el mismo término en diferentes taxonomías. Observe que el registro donde term_id = 1
tiene taxonomy = category
, mientras que los otros registros tienen taxonomy = post_tag
.
Para relacionar objetos guardados en el wp_posts
y el wp_term_taxonomy
tablas, WordPress usa el wp_term_relationships
tabla:
Tenga en cuenta que esta es la única tabla del modelo que tiene una clave compuesta por más de un atributo.
Las wp_term_relationships
la tabla tiene los siguientes atributos:
object_id
– una referencia awp_posts
mesa.term_taxonomy_id
– una referencia a lawp_term_taxonomy
mesa.term_order
– el término orden para un objeto específico.
Tenemos seis registros aquí que conectan seis registros de la wp_term_taxonomy
tabla con la publicación (object_id = 6
).
Comentarios y modelado de datos de WordPress
Logramos colocar algo de contenido en nuestra página de WordPress. Eso está bien, pero en la mayoría de los casos queremos recibir comentarios del público. Y ese es el papel de la función de comentarios.
Para ver los comentarios en las publicaciones, simplemente podemos usar "Dejar un comentario" o hacer clic en "X Comentario" (donde X representa la cantidad de comentarios de la publicación).
Nuestro primer post ya tiene un comentario. Cuando hagamos clic en él, veremos que es un comentario automático causado por pingback. Agregaremos un comentario más a esa publicación:
Ahora vemos dos comentarios para nuestra publicación, pero ¿qué hay detrás de todo esto en la base de datos?
Puede adivinar por el nombre de la tabla que wp_comments
la tabla se utiliza para almacenar comentarios en nuestra página de WordPress:
La mayoría de los atributos se explican por sí mismos, pero aún así veremos más de cerca algunos de ellos.
El comment_post_ID
es una referencia a wp_posts
mesa; indica qué publicación ha recibido comentarios. Para el primer comentario, podemos ver que en realidad era un pingback y que el "autor" es otra publicación. Para el segundo comentario, podemos ver que soy el autor. Observe también el comment_agent
contiene información básica sobre el sistema y la computadora utilizada para publicar un comentario.
La idea principal detrás de las tres metatablas del modelo es almacenar datos que no queremos almacenar en nuestra tabla principal. El wp_commentmeta
está relacionado con wp_comments
tabla de la misma manera que wp_postmeta
la tabla está relacionada con el wp_posts
mesa.
Ver usuarios de WordPress
Después de que nuestra página esté en línea, cualquiera puede verla. Los usuarios de WordPress son quienes, de acuerdo con su estado de permiso, pueden realizar cambios en nuestro sitio y su contenido.
Ahora echaremos un vistazo a los wp_users
y el wp_usermeta
tablas en la base de datos MySQL.
Como era de esperar, los wp_users
La tabla que se muestra arriba almacena datos básicos para todos los usuarios registrados en nuestro sitio de WordPress. Tenga en cuenta que el user_pass
está encriptado y que NewUser tiene la user_activation_key
atributo lleno mientras que edrkusic tiene ese campo vacío.
Mientras que los atributos enumerados en wp_users
table son lo que esperaríamos en cualquier sitio de WordPress, el wp_usermeta
La tabla se utiliza para almacenar valores que pueden ser específicos de un determinado proyecto:
Por ejemplo, observe que el registro con umeta_id = 25
contiene el valor “alguna información biográfica” , el mismo texto que escribimos en el tablero mientras editábamos NewUser. El user_id
el atributo en ese registro tiene valor 2 , que corresponde al ID de NewUser en wp_users
mesa. Obviamente, el user_id
es una referencia a wp_users
mesa.
Enlaces y Opciones en WordPress
La idea detrás de wp_links
tabla es para almacenar enlaces a otros sitios:
Tener enlaces a otros sitios era muy popular al comienzo de la era de los blogs; hoy en día se usa cada vez menos. A partir de la versión 3.5 de WordPress, la administración de enlaces incluso se eliminó de la interfaz de administración. Aún así, esta tabla se mantiene para proporcionar compatibilidad con versiones anteriores.
Las wp_options
la tabla almacena datos sobre la instalación de WordPress, la configuración del sitio, el tema, los complementos y los widgets:
También se utiliza para almacenar datos temporales en caché. La lógica EAV también está presente en esta tabla, como lo está en wp_usermeta
, wp_postmeta
y wp_commentmeta
. El atributo option_name
juega el papel de la clave, mientras que el atributo option_value
es su valor correspondiente. Los otros dos atributos en la tabla son el atributo de clave principal option_id
y autoload
, que controla si una opción se carga automáticamente desde la base de datos.
Evaluación del modelo de base de datos de WordPress
El modelo de base de datos detrás de WordPress no sigue varias buenas reglas y convenciones de diseño de bases de datos. Cuando estamos diseñando una base de datos para un propósito específico, sabiendo de antemano todas sus funcionalidades deseadas, podemos seguir todas esas reglas. Pero WordPress necesita cubrir cualquier cosa que cualquiera pueda tener en mente, por lo que sacrificar claves foráneas y usar EAV es algo que debe hacerse. Nombraría el atributo ID de la misma manera en todas las tablas y haría lo mismo con las "claves externas". Por ejemplo, no usaría post_author
en el wp_posts
table, pero me quedaría con users_id
. Aparte de esto, debo estar de acuerdo en que la base de datos de WordPress es realmente un gran modelo para su propósito.
¿Qué piensas? Háganos saber en la sección de comentarios.