Base de Données WordPress - diagramme de la table wp_options

La Base de Données WordPress – 2/2

Suite de la description des tables de la Base de Données WordPress avec les tables permettant de gérer les commentaires, les options, les taxonomies et les liens.

Pour chaque table, son utilité et le lien entre l’administration WordPress et le contenu des tables de la Base de Données sont mis en évidence.

Diagramme des tables WordPress
Cliquer sur l’image pour agrandir le diagramme
Haut de page

Les tables des commentaires (wp_comments et wp_commentmeta)

La table wp_comments

Les commentaires saisis par un utilisateur à propos d’un article ou d’une page sont stockés dans la table wp_comments (rappel, nous utilisons le préfixe de table par défaut « wp_ », pour faciliter la compréhension, mais il est préférable de changer le préfixe de tables).

Voici un commentaire saisi en bas d’un article :

Base de Données WordPress - commentaire saisi par un visiteur
Base de Données WordPress – commentaire saisi par un visiteur

Et voici ce même commentaire stocké dans la Base de Données :

Base de Données WordPress - commentaire dans la Base de Données
Base de Données WordPress – commentaire dans la Base de Données

On remarquera qu’en plus du commentaire, on trouve, ici encadré en rose,  l’identifiant du « post » (article ou page) où le commentaire a été saisi, ainsi que des informations sur l’auteur du commentaire.

La table wp_commentmeta

De la même façon qu’il existe des tables wp_usermeta et wp_postmeta, il existe une table wp_commentmeta pour ajouter des informations supplémentaires aux commentaires.

Voici un exemple d’utilisation par l’extension Akismet qui filtre les commentaires pour détecter les indésirables (spam) :

Base de Données WordPress - la table wp_commentmeta
Base de Données WordPress – la table wp_commentmeta

Description des tables  wp_comments  et  wp_commentmeta  dans le diagramme de tables :

Base de Données WordPress - diagramme des tables wp_comments et wp_commentmeta
Base de Données WordPress – diagramme des tables wp_comments et wp_commentmeta
Haut de page

La table des options (wp_options)

On pourrait renommer cette table « wp_paramètres ». En effet, on y trouve l’essentiel du paramétrage de l’installation WordPress, mais aussi des extensions (plugins).

Regardons par exemple les réglages généraux (Option « Réglages » du menu d’administration) :

Base de Données WordPress - paramétrage du site dans l'administration
Base de Données WordPress – paramétrage du site dans l’administration

Ces paramètres se retrouvent au début de la table wp_options :

Base de Données WordPress - paramétrage du site dans la Base de Données
Base de Données WordPress – paramétrage du site dans la Base de Données

Prenons l’exemple du paramétrage de l’extension ‘pastacode‘.

Les réglages de l’extension dans l’administration WordPress :

Base de Données WordPress - paramétrage de l'extension dans l'administration
Base de Données WordPress – paramétrage de l’extension dans l’administration

Les mêmes paramètres dans la table wp_options :

Base de Données WordPress - paramétrage de l'extension dans la table wp_options
Base de Données WordPress – paramétrage de l’extension dans la table wp_options

Description de la table  wp_options  dans le diagramme de tables :

Base de Données WordPress - la table wp_options
Base de Données WordPress – la table wp_options

À noter : la table wp_options n’a aucun lien avec une autre table.

Haut de page

Les tables de taxonomie (wp_terms, wp_taxonomy,  wp_term_relationships et wp_termmeta)

Les taxonomies permettent de regrouper des articles suivant des typologies. Deux taxonomies existent en standard : les catégories et les étiquettes. Par programme, il est possible de créer ses propres taxonomies (taxonomie personnalisée).

Il est important de ne pas confondre les taxonomies (catégorie, étiquette, taxonomies personnalisées) et les termes d’une taxonomie (une catégorie, une étiquette, une taxonomie personnalisée).

Une taxonomie peut être associée à un ou plusieurs articles, articles personnalisés (‘custom post type’) ou liens.

La gestion des taxonomies dans la Base de Données est un peu complexe car :

  • à un article peut être associé un nombre indéfini de taxonomies différentes (typiquement ‘catégories’ et ‘étiquettes’),
  • à un article peut être associé un nombre indéfini de termes d’une même taxonomie (par exemple, plusieurs étiquettes),
  • un même terme de taxonomie (exemple, un type de catégorie) peut être associé à plusieurs articles.

Pour gérer les taxonomies, WordPress utilise quatre tables dont on va analyser le fonctionnement.

Création d’une nouvelle catégorie dans l’administration WordPress :

Base de Données WordPress - création d'une catégorie dans l'administration
Base de Données WordPress – création d’une catégorie dans l’administration

Effet de la création d’un terme de taxonomie sur les tables WordPress :

Un enregistrement est créé dans la table wp_terms qui contient l’ensemble des termes de toutes les taxonomies :

Base de Données WordPress - mise à jour de la table wp_terms
Base de Données WordPress – mise à jour de la table wp_terms

Description des champs de la table wp_terms :

  • term_id : identifiant unique pour chaque terme (indépendamment de la taxonomie à laquelle il appartient),
  • name : le nom du terme,
  • slug : identifiant unique de terme de taxonomie qui peut être utilisé dans une url; par exemple : l’url pour sélectionner les articles de la catégorie hébergement peut être de la forme : ‘http://localhost/demo/category/hebergement/’.
  • term group : permet de regrouper des termes similaires,

Avec cette seule table, nous savons qu’un terme de taxonomie a été créé , mais nous ignorons à quelle taxonomie elle se rapporte (catégorie, étiquette, taxonomie personnalisée ?).

Pour cela, WordPress a créé la table wp_terms_taxonomy. Cette table définit à quelle taxonomie appartient un terme. Dans notre exemple, on constate que le terme d’identifiant « 16 » appartient à la taxonomie « category » :

Base de Données WordPress - la table wp_term_taxonomy

Description des champs de la table wp_terms_taxonomy :

  • term_taxonomy_id : identifiant unique pour une paire ‘terme + taxonomie’ ( point d’entrée unique dans la table wp_term_taxonomy),
  • term_id : l’identifiant du terme dans la table wp_terms,
  • taxonomy : la taxonomie à laquelle appartient le terme (ici, il s’agit d’un terme de catégorie),
  • description : la description du terme,
  • parent : permet de gérer la hiérarchie des termes dans une catégorie (par exemple : catégories et sous catégories),
  • count : permet de savoir combien de posts utilisent ce terme de taxonomie.

Affectation d’une catégorie à un article :

Créons un article qui va utiliser la catégorie ‘catégorie de démonstration’ :

Base de Données WordPress - affectation d'une catégorie à un article
Base de Données WordPress – affectation d’une catégorie à un article

On peut vérifier que les deux tables wp_terms et wp_terms_taxonomy ne sont pas modifiées. En effet, nous n’avons ni créé, ni modifié ni supprimé un terme ou une taxonomie, nous avons simplement associé un terme de catégorie à un article (post).

C’est la table wp_term_relationships qui est utilisée pour stocker l’information suivant laquelle un terme de taxonomie a été associée à un article ( « catégorie de démonstration » associé au post d’identifiant « 1925 ») :

Base de Données WordPress - les termes associés à un article
Base de Données WordPress – les termes associés à un article

Description des champs de la table wp_term_relationships :

  • object_id : identifiant de l’article ou du lien à qui le terme de taxonomie a été associé,
  • term_taxonomy_id : identifiant d’une paire ‘terme + taxonomie’ dans la table wp_term_taxonomy,
  • term_order : permet de gérer un ordre des termes de taxonomie pour un post ou un lien.

La table wp_termmeta

À partir de la version WordPress 4.4 des meta données peuvent être ajoutées aux catégories. Techniquement, cela a entraîné la création d’une douzième table, la table wp_termmeta :

Base de données WordPress - la table wp_termmeta
Base de données WordPress – la table wp_termmeta

Description des champs de la table wp_termmeta :

  • meta_id : identifiant de la meta donnée,
  • term_id : identifiant de la taxonomie à laquelle la meta est associée,
  • meta_key : la clé (le nom) de la meta,
  • meta_value : la valeur associée à la meta.
Base de données WordPress - contenu de la table wp_termmeta
Base de données WordPress – contenu de la table wp_termmeta

L’article ci-dessous décrit comment associer des meta-données à une catégorie :

Les meta données de catégorie

Description des tables  wp_terms, wp-term_taxonomy, wp_term-relationships  et wp_termmeta dans le diagramme de tables :

Diagramme des tables de taxonomies
Les tables de taxonomies
Haut de page

Jusqu’à la version WordPress 3.5, il était possible de constituer des listes de liens et de les afficher (ce qu’on appelle des blogrolls). Ces liens étaient stockés dans la table wp_links.

Il est toujours possible d’utiliser cette fonction en activant le ‘gestionnaire de liens’ (link manager) via une extension (plugin) fournie par WordPress, soit en ajoutant le code suivant dans le fichier functions.php :

add_filter( 'pre_option_link_manager_enabled', '__return_true' );
activation du gestionnaire de lien via functions.php

Après activation du gestionnaire de liens, une nouvelle entrée apparaît dans le menu principal de l’administration :

Base de Données WordPress - le menu "Liens" dans l'administration
Base de Données WordPress – le menu « Liens » dans l’administration

Ajoutons un lien :

Base de Données WordPress - création d'un lien
Base de Données WordPress – création d’un lien
Base de Données WordPress - création d'un lien via l'administration
Base de Données WordPress – création d’un lien via l’administration

Ces informations sont stockées dans la table wp_links :

Base de Données WordPress - lien dans wp_links
Base de Données WordPress – lien dans wp_links
Description de la table wp_links
La table wp_links

À noter : la table wp_links n’a aucun lien avec une autre table.

Haut de page

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *