Tables de base de données personnalisées dans WordPress : première partie

Publié: 2022-06-27

Dans cette série d'articles, nous allons voir comment nous pouvons créer des tables de base de données personnalisées dans WordPress avec ou sans plugin.

Quand et pourquoi devrais-je utiliser des tables de base de données personnalisées ?

Dans la plupart des cas, les tables de base de données WordPress par défaut créées lors de l'installation de WordPress sont tout ce dont vous aurez besoin. Ces tableaux contiennent toutes sortes d'informations telles que les types de messages et leurs métadonnées associées. Alors, pourquoi auriez-vous besoin d'une table de base de données personnalisée ?

Celles-ci prennent tout leur sens lorsque vous travaillez avec des données qui ne font pas partie des informations normales utilisées dans WordPress. Ainsi, vous souhaiterez peut-être placer des données dans une table personnalisée lorsque vous créez un plugin qui doit stocker des informations dans une base de données. C'est pour cette raison que vous verrez que des plugins comme WooCommerce ont leurs propres tableaux personnalisés.

Hébergez votre site web avec Pressidium

GARANTIE DE REMBOURSEMENT DE 60 JOURS

VOIR NOS FORFAITS

En plus d'être un moyen plus simple de stocker des informations, l'utilisation de tables séparées peut aider à améliorer les performances, car les requêtes utilisées n'ont pas à rechercher dans des lignes et des lignes de données inutiles. Au lieu de cela, ils peuvent être dirigés vers le "bon" tableau où ils peuvent trouver les informations requises plus rapidement et plus efficacement. Cela devient très important lorsque les tables de base de données commencent à croître.

Création d'une table de base de données personnalisée WordPress

Disons que nous voulons créer un plugin simple qui nous aidera à organiser une liste d'étudiants. En réalité, une tâche simple comme celle-ci signifie que nous n'avons pas du tout besoin d'utiliser des tableaux personnalisés. Un type de message personnalisé ferait parfaitement l'affaire.

Cependant, pour les besoins de cet exemple, ce type de données est parfait pour démontrer la théorie derrière les tables personnalisées, nous allons donc l'utiliser. Remarque : Nous supposerons que vous possédez des connaissances de base en PHP et mySQL.

Commencer

Pour commencer, nous allons créer une table de base de données "étudiant" avec des colonnes pour le nom, l'âge, l'e-mail et un identifiant unique. Nous allons le faire en créant un plugin personnalisé pour faire le travail.

REMARQUE : Si vous ne savez pas encore comment créer un plugin personnalisé, consultez notre guide sur la création de votre propre plugin WordPress personnalisé avant de reprendre ce didacticiel !

Créer les fichiers du plug-in

Nous allons créer un dossier appelé "my-custom-db-tables" dans le dossier plugins et à l'intérieur de celui-ci, un fichier nommé "my-custom-db-tables.php" qui contient ce morceau de code :

 <?php /* Plugin Name: My Custom DB Tables Description: A plugin for registering my students Author: Tassos Antoniou */ function create_the_custom_table() { // THE CODE } register_activation_hook(__FILE__, 'create_the_custom_table');

Ce que nous avons fait, c'est introduire les informations du plugin afin que WordPress reconnaisse le plugin. Évidemment, vous aurez également besoin d'une fonction qui ajoute le schéma de la table à la base de données qui sera la fonction create_the_custom_table() .

Dans la plupart des cas, vous n'avez besoin d'exécuter cette fonction qu'une seule fois, idéalement lorsque le plugin est activé. Par conséquent, nous avons utilisé le register_activation_hook() fourni par WordPress pour nous assurer que la fonction s'exécute lors de l'activation du plugin.

Définir la structure du tableau

Bien sûr, rien ne se passera encore si nous activons le plugin, car la fonction est toujours vide. Alors allons-y et remplissons-le avec ce code, afin de créer réellement la table :

 <?php /* Plugin Name: My Custom DB Tables Description: A plugin for registering my students Author: Tassos Antoniou */ function create_the_custom_table() { global $wpdb; $charset_collate = $wpdb->get_charset_collate(); $table_name = $wpdb->prefix . 'students'; $sql = "CREATE TABLE " . $table_name . " ( id int(11) NOT NULL AUTO_INCREMENT, name tinytext NOT NULL, email VARCHAR(100) NOT NULL, age int(11) NULL, PRIMARY KEY (id) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } register_activation_hook(__FILE__, 'create_the_custom_table');

Maintenant, arrêtons-nous un instant pour examiner ce que nous avons fait avec ce bout de code.

Tout d'abord, nous récupérons le préfixe de la table à l'aide de la classe WordPress globale $wpdb qui communique avec la base de données. C'est le même préfixe qui est défini dans le fichier wp-config.php et c'est une bonne pratique de l'utiliser également dans votre tableau personnalisé. Nous hériterons également du classement actuel en l'enregistrant dans la variable $charset_collate pour le définir plus tard dans la requête.

Notre prochaine étape consiste à définir la structure de la table dans la requête sql pour obtenir le bon schéma souhaité. Comme nous l'avons dit, une colonne d'identifiant, d'e-mail, de nom et d'âge avec le bon type de données pour chacun.

 $sql = "CREATE TABLE " . $table_name . " ( id int(11) NOT NULL AUTO_INCREMENT, name tinytext NOT NULL, email VARCHAR(100) NOT NULL, age int(11) NULL, PRIMARY KEY (id) ) $charset_collate;";

Ensuite, nous avons require_once fois du fichier upgrade.php . C'est obligatoire pour utiliser la fonction dbDelta qui vient juste après. Sur WordPress, pour créer une table de base de données (ou mettre à jour les tables existantes vers une nouvelle structure), nous devons utiliser la fonction dbDelta.

REMARQUE : Au lieu d'exécuter directement une requête SQL, cette fonction est utilisée pour modifier la base de données en créant ou en mettant à jour une table, basée sur des instructions SQL spécifiées. En utilisant son paramètre $queries , nous pouvons transmettre le schéma de notre table personnalisée.

Maintenant, si vous activez le plugin et vérifiez votre base de données, vous devriez voir que la table a été créée.

Maintenant, si vous lisez à l'intérieur du fichier wp-admin/includes/upgrade.php , vous remarquerez que dbDelta() utilise la fonction preg_match() afin de récupérer des informations à partir de l'instruction SQL. Pour cette raison, vous devez être prudent lorsque vous le modifiez. La documentation officielle fournit plus d'informations à ce sujet, mais nous avons souligné les points clés ci-dessous :

  • Vous devez placer chaque champ sur sa propre ligne dans votre instruction SQL.
  • Vous devez avoir deux espaces entre les mots PRIMARY KEY et la définition de votre clé primaire.
  • Vous devez utiliser le mot clé KEY plutôt que son synonyme INDEX et vous devez inclure au moins une KEY.
  • KEY doit être suivi d'un seul espace , puis du nom de la clé, puis d'un espace, puis d'une parenthèse ouvrante avec le nom du champ, puis d'une parenthèse fermée.
  • Les autres clés que la clé principale doivent recevoir un nom. Par exemple:
 ... PRIMARY KEY (id), KEY age (age) ...
  • Vous ne devez pas utiliser d'apostrophes ou de backticks autour des noms de champs.
  • Les types de champs doivent être tous en minuscules .
  • Les mots clés SQL, tels que CREATE TABLE et UPDATE, doivent être en majuscules .
  • Vous devez spécifier la longueur de tous les champs qui acceptent un paramètre de longueur, comme int(11) de la colonne id par exemple.

Vous avez peut-être également remarqué que nous n'avons pas vérifié si la table existe déjà dans la base de données. C'est parce que dbDelta le fait pour nous. Pas besoin de vous soucier des requêtes de mise à jour. Non seulement il créera la table, mais il vérifiera si une table portant le même nom existe déjà, et si c'est le cas, il ne créera pas la table. Il ne mettra à jour la structure de table existante que si nécessaire.

Nous en parlerons davantage dans les prochains articles de la série.

Fonctionnalité et évolutivité

Alors, que doit-il se passer lorsque le plugin est désactivé ou désinstallé ? Idéalement, il devrait y avoir une option d'administration pour choisir de supprimer ou non cette table de la base de données si et quand le plugin est désactivé ou supprimé.

De plus, vous découvrirez presque certainement tôt ou tard que vous devez changer votre plugin (pour l'améliorer ou corriger un bogue). Vous souhaitez peut-être modifier la façon dont il stocke les données, ajouter des colonnes à la table ou modifier sa conception. Cela signifie que vous devez créer le plug-in de manière à garantir qu'il est aussi évolutif que possible et qu'il peut s'adapter à toutes les modifications apportées.

Dans nos prochains articles de cette série, nous approfondirons ces sujets et vous montrerons comment vous pouvez y parvenir. Revenez bientôt !