Entender y trabajar con datos en WordPress - Multisite

En las partes anteriores de esta serie, hemos revisado las diferentes tablas de la base de datos de WordPress y hemos examinado qué datos almacenan, cómo interactúan entre sí y qué funciones utiliza para interactuar con ellos..

En esta parte final, pasaré a ver Multisite. La base de datos para una instalación de WordPress Multisite contendrá tablas adicionales: un conjunto de tablas para cada sitio que se ejecuta en la red y algunas tablas adicionales para la propia red, así como las tablas para el sitio central.. 

Esto significa que hay tres elementos para comprender cómo funciona la base de datos en Multisite:

  • Tablas de base de datos para el sitio central
  • Tablas de base de datos para la red
  • Tablas de base de datos para cada sitio adicional.

Comenzaré observando cómo WordPress almacena los datos para el sitio central.

Tablas de base de datos para el sitio central en Multisite

Para el sitio central en una red, WordPress usa las mismas 11 tablas de base de datos que en una instalación de un solo sitio:

  • wp_posts
  • wp_postmeta
  • wp_comments
  • wp_commentmeta
  • wp_users
  • wp_usermeta
  • wp_links
  • wp_term_relationships
  • wp_term_taxonomy
  • wp_terms
  • wp_options

Estos contendrán datos relacionados con el sitio principal. Dos de ellos también contendrán datos relacionados con el resto de la red. Estos son:

  • wp_users
  • wp_usermeta

Las otras nueve tablas funcionan de la misma manera que lo hacen para un solo sitio: almacenan datos sobre el contenido del sitio principal. Sin embargo, esas dos últimas tablas también almacenarán los datos del usuario que son relevantes para toda la red, así como los datos del usuario que solo utiliza el sitio central. Voy a examinar esto en un momento.

Tablas de base de datos para la red

Además de almacenar datos de usuario para toda la red en dos de las tablas principales, WordPress también crea tablas adicionales en una instalación multisitio que contiene datos relacionados con la red y sus sitios.. 

Estos son:

  • wp_blogs
  • wp_blog_versions
  • wp_registration_log
  • wp_signups
  • wp_site
  • wp_sitemeta
  • wp_sitecategories (Opcional)

WordPress utiliza estas siete (o seis) tablas más las dos tablas de usuario para almacenar todos los datos sobre la red de sitios múltiples. Esto es lo que cada uno de ellos almacena:

Mesa Datos Notas
wp_blogs Este campo almacena los detalles de cada sitio en la red, por lo que solo tiene un registro para cada sitio. Los campos incluyen blog_id, dominio, registrado (los datos en los que se creó el sitio) y última actualización (de nuevo, una fecha).
wp_blog_versions La versión actual de la base de datos para cada sitio, actualizada cuando actualiza la red. Tres campos: blog_id, db_version y última actualización
wp_registration_log El usuario administrador creado cuando se registra cada sitio Para cada sitio (identificado por blog_id), la mesa almacena la user_id Para el administrador, su dirección de correo electrónico y la fecha en que se registraron..
wp_signups Almacena datos en sitios que se han registrado pero no están activados Los campos incluyen un único Signup_id Para cada registro, el dominio registrado, el título, el inicio de sesión del usuario y la dirección de correo electrónico. Una vez que se activa un sitio, este registro se elimina y se crea un registro en wp_blogs.
wp_site Almacena la URL del sitio principal Esta tabla solo tiene un registro con tres campos: el id del sitio principal (que se mostrará) 1), su dominio y la ruta (normalmente /)
wp_sitemeta Almacena metadatos para la red. Esta tabla es el equivalente de wp_options Para toda la red. Contiene todos los metadatos relacionados con la configuración de red más pequeñas cantidades de metadatos para sitios individuales. Tiene cuatro campos: un único. meta_id, Identificación del sitio (que enlaza con wp_blogs), meta_key y meta_valor.
wp_sitecategories Tabla opcional solo creada si los términos globales están habilitados para un sitio. Habilitar términos globales le permite usar términos en múltiples sitios en la red. La tabla (si está creada), tendrá cuatro campos: cat_ID, nombre de gato, nombre_categoría y última actualización. Tenga en cuenta que esta tabla almacena términos, no solo categorías, a pesar de los nombres de campo.
wp_users Los datos de todos los usuarios se almacenan aquí en lugar de para cada sitio, ya que los usuarios individuales pueden tener acceso a múltiples sitios en la red. En una instalación de varias pistas, WordPress crea dos campos adicionales en la wp_users tabla: correo no deseado y eliminado, ambos de los cuales son valores booleanos predeterminados para NO.
wp_usermeta los wp_usermeta tablas almacena todos los metadatos para todos los usuarios del sitio La tabla se utiliza de la misma manera que para una instalación de un solo sitio..

Relaciones entre las tablas

La mayoría de estas tablas están relacionadas con wp_blogs mesa a través de la blog_ID campo, ya que todos los datos necesarios para los sitios en la red deberán estar vinculados al registro del sitio central. Las excepciones son:

  • wp_sitecategories, ¿Qué enlaces a las publicaciones y otros contenidos?
  • wp_signups, ya que estos no son sitios registrados todavía
  • wp_usermeta, que tiene un enlace indirecto a wp_blogs vía wp_users

Para obtener más detalles sobre cada una de estas tablas y sus campos, consulte la página del Codex en la base de datos.

Tablas de base de datos para sitios en una red

La forma en que WordPress almacena los datos para cada uno de los sitios en su red es bastante sencilla: crea múltiples copias de cada una de las tablas de la base de datos, una para cada sitio. Sin embargo, no crea copias adicionales de wp_users y wp_usermeta ya que estos están todos almacenados en la tabla principal.

Para diferenciar las tablas de cada sitio, WordPress agrega el ID del sitio al nombre de la tabla, por ejemplo, para el sitio 2, wp_posts se convierte en wp_2_posts.

Cada sitio tendrá las siguientes tablas:

  • wp_xx_posts
  • wp_xx_postmeta
  • wp_xx_comments
  • wp_xx_commentmeta
  • wp_xx_links
  • wp_xx_term_relationships
  • wp_xx_term_taxonomy
  • wp_xx_terms
  • wp_xx_options

los xx Lo anterior será reemplazado por el ID del sitio numérico. Todas estas tablas almacenan los datos de la misma manera para cada sitio que lo harían si el sitio fuera una instalación de un solo sitio..

Resumen

Si está manipulando, recuperando o moviendo datos de una instalación de WordPress Multisite, es importante entender las formas en que Multisite almacena los datos de manera diferente a una instalación de Multisite. 

Como he mostrado, hay tres elementos principales para esto: tablas usadas para el sitio central; tablas utilizadas para almacenar la base de datos sobre la red como un todo; y tablas creadas para cada nuevo sitio. La estructura de estos es similar a la instalación de un solo sitio, siempre que recuerde que las dos tablas que almacenan datos en los usuarios no están duplicadas para cada sitio..