Comprendre et utiliser les données dans WordPress - Multisite

Dans les parties précédentes de cette série, nous avons examiné les différentes tables de la base de données WordPress et avons examiné les données qu'elles stockent, leur interaction et les fonctions que vous utilisez pour interagir avec elles..

Dans cette dernière partie, je parlerai de Multisite. La base de données pour une installation WordPress Multisite contiendra des tables supplémentaires: un ensemble de tables pour chaque site exécuté sur le réseau et des tables supplémentaires pour le réseau lui-même, ainsi que les tables pour le site principal.. 

Cela signifie qu'il y a trois éléments pour comprendre le fonctionnement de la base de données dans Multisite:

  • Tables de base de données pour le site principal
  • Tables de base de données pour le réseau
  • Tables de base de données pour chaque site supplémentaire.

Je vais commencer par regarder comment WordPress stocke les données pour le site principal.

Tables de base de données pour le site principal dans plusieurs sites

Pour le site principal d'un réseau, WordPress utilise les mêmes 11 tables de base de données que pour une installation sur un seul site:

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

Ceux-ci contiendront des données relatives au site principal. Deux d’entre eux contiendront également des données relatives au reste du réseau. Ceux-ci sont:

  • wp_users
  • wp_usermeta

Les neuf autres tables fonctionnent de la même manière que pour un seul site: elles stockent des données sur le contenu du site principal. Cependant, ces deux dernières tables stockeront également des données utilisateur pertinentes pour l'ensemble du réseau, ainsi que des données utilisateur utilisées uniquement par le site principal. Je vais examiner cela dans un instant.

Tables de base de données pour le réseau

En plus de stocker les données utilisateur pour l'ensemble du réseau dans deux des tables principales, WordPress crée également des tables supplémentaires dans une installation multisite qui contiennent des données relatives au réseau et à ses sites.. 

Ceux-ci sont:

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

WordPress utilise ces sept (ou six) tables, ainsi que les deux tables utilisateur, pour stocker toutes les données relatives au réseau multisite. Voici ce que chacun d'entre eux stocke:

Table Les données Remarques
wp_blogs Ce champ stocke les détails de chaque site du réseau, il n’a donc qu’un seul enregistrement pour chaque site.. Les champs comprennent blog_id, domaine, inscrit (les données sur lesquelles le site a été créé) et dernière mise à jour (encore une date).
wp_blog_versions La version actuelle de la base de données pour chaque site, mise à jour lors de la mise à jour du réseau. Trois champs: blog_id, db_version et dernière mise à jour
wp_registration_log L'utilisateur admin créé lors de l'inscription de chaque site Pour chaque site (identifié par blog_id), la table stocke les identifiant d'utilisateur pour l'administrateur, leur adresse email et la date d'inscription.
wp_signups Stocke les données sur les sites qui ont été enregistrés mais non activés Les champs comprennent un unique signup_id pour chaque enregistrement, le domaine auquel vous vous êtes inscrit, le titre, le nom d'utilisateur et l'adresse e-mail. Une fois qu'un site est activé, cet enregistrement est supprimé et un enregistrement est créé dans wp_blogs.
wp_site Stocke l'URL du site principal Cette table a un seul enregistrement avec trois champs: l’identifiant du site principal (qui sera 1), son domaine et le chemin (normalement /)
wp_sitemeta Stocke les métadonnées pour le réseau Ce tableau est l'équivalent de wp_options pour l'ensemble du réseau. Il contient toutes les métadonnées relatives aux paramètres réseau, ainsi que de plus petites quantités de métadonnées pour des sites individuels. Il a quatre champs: un unique meta_id, ID du site (qui relie à wp_blogs), meta_key et meta_value.
wp_sitecategories Table facultative créée uniquement si les conditions générales sont activées pour un site. L'activation des termes globaux vous permet d'utiliser des termes sur plusieurs sites du réseau. La table (si elle est créée) aura quatre champs: cat_ID, nom_cat, nom_catégorie et dernière mise à jour. Notez que cette table stocke les termes, pas seulement les catégories, malgré les noms de champs.
wp_users Les données sur tous les utilisateurs sont stockées ici plutôt que pour chaque site, car des utilisateurs individuels peuvent avoir accès à plusieurs sites sur le réseau.. Dans une installation multiste, WordPress crée deux champs supplémentaires dans le wp_users table: spam et supprimé, les deux valeurs étant des valeurs booléennes par défaut NON.
wp_usermeta le wp_usermeta tables stocke toutes les métadonnées pour tous les utilisateurs du site Le tableau est utilisé de la même manière que pour une installation sur un seul site.

Relations entre les tables

La plupart de ces tableaux sont liés à la wp_blogs tableau via le blog_ID champ, car toutes les données nécessaires aux sites du réseau devront être liées à l’enregistrement de site principal. Les excepte sont:

  • wp_sitecategories, des liens vers des publications et d'autres contenus
  • wp_signups, comme ces sites ne sont pas encore enregistrés
  • wp_usermeta, qui a un lien indirect avec wp_blogs via wp_users

Pour plus de détails sur chacune de ces tables et leurs champs, voir la page Codex sur la base de données.

Tables de base de données pour les sites d'un réseau

La manière dont WordPress stocke les données de chacun des sites de votre réseau est assez simple: elle crée plusieurs copies de chaque table de base de données, une pour chaque site. Cependant, il ne crée pas de copies supplémentaires de wp_users et wp_usermeta comme ceux-ci sont tous stockés dans la table principale.

Pour différencier les tables de chaque site, WordPress ajoute l'ID du site au nom de la table, par exemple pour le site 2, wp_posts devient wp_2_posts.

Chaque site aura les tables suivantes:

  • 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

le xx ci-dessus sera remplacé par l'ID de site numérique. Toutes ces tables stockent les données de la même manière pour chaque site comme si le site était une installation sur un seul site.

Résumé

Si vous manipulez, récupérez ou déplacez des données à partir d'une installation WordPress Multisite, il est important de comprendre la manière dont Multisite stocke les données différemment d'une installation Multisite.. 

Comme je l'ai montré, il y a trois éléments principaux: des tableaux utilisés pour le site principal; tables utilisées pour stocker la base de données sur le réseau dans son ensemble; et des tables créées pour chaque nouveau site. La structure de ceux-ci est similaire à une installation sur un seul site, à condition que vous vous souveniez que les deux tables stockant des données sur les utilisateurs ne sont pas dupliquées pour chaque site..