sql >> Base de Datos >  >> RDS >> Database

WordPress – Detrás de escena, Parte 2

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 el wp_posts la tabla es una "referencia" al atributo "ID" en wp_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 los wp_posts tabla), o meta_id /umeta_id (en las metatablas:wp_postmeta , wp_commentmeta y wp_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 las wp_term_relationships tabla, donde la clave principal consta de dos atributos:object_id y term_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 los wp_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 gusta comment_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 un post_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 para post_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 con post_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 a wp_posts mesa.
  • meta_key – una descripción de un meta_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 de name .
  • 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 los wp_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 en wp_terms mesa.
  • count – el número de objetos en el wp_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 a wp_posts mesa.
  • term_taxonomy_id – una referencia a la wp_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.