web-dev-qa-db-fra.com

Quelle est la bonne façon d'utiliser une table personnalisée?

J'ai ajouté manuellement une table à ma base de données wordpress en utilisant SQL en utilisant CREATE TABLE. Je souhaite ajouter des fonctions permettant d’ajouter, de modifier et de supprimer les données de cette table, comme avec wp_update_user().

Devrais-je créer une interface pour ma nouvelle table? Comment vais-je à ce sujet?

Plus sur le problème:

Je souhaite que les utilisateurs du site puissent rejoindre des groupes/équipes. J'ai mis en place une table Teams (elle contient l'ID, le type et le nom de l'équipe) et une table Join (avec l'ID utilisateur/l'ID de l'équipe) dans ma base de données. Je veux pouvoir appeler des fonctions liées à ces tables à partir de mon fichier page_template.php.

Par exemple, je souhaite appeler une fonction qui insérera une nouvelle équipe dans la base de données en fonction de la saisie du formulaire de l'utilisateur.

1
ellen

Devrais-je créer une interface pour ma nouvelle table? Comment vais-je à ce sujet?

Malheureusement, il n'y a pas d'interface à implémenter, vous allez devoir tout construire à partir de zéro . Ceci comprend:

  • Les pages d'admin
  • Les écrans d'édition
  • La sauvegarde et la mise à jour et la suppression
  • Toutes les classes et fonctions devront être créées à partir de zéro
  • Toute la mise en cache
  • Points de terminaison de l'API REST
  • Archives frontend, modèles, jolies URL/règles de réécriture
  • Pagination
  • Tout le SQL

La seule chose que WP puisse vous aider serait la variable $wpdb que vous pouvez utiliser pour effectuer des requêtes SQL.

Je veux ajouter des fonctions pour ajouter, modifier et supprimer les données de cette table, comme avec wp_update_user ().

Vous allez devoir tout construire à partir de zéro si vous les voulez. WordPress ne fournit aucune aide ici

Par exemple, je souhaite appeler une fonction qui insérera une nouvelle équipe dans la base de données en fonction de la saisie du formulaire de l'utilisateur.

Vous allez devoir créer la fonction à partir de zéro. Il n'y a pas de chemin recommandé pour ce que vous faites, il s'agit d'un développement générique PHP qui se trouve dans un site WP. Aucune des API WP ne sera utile

J'ai ajouté manuellement une table à ma base de données wordpress en utilisant SQL en utilisant CREATE TABLE

La fonction dbdelta peut également être utilisée pour créer la table et mettre à jour son schéma, mais c'est une fonction très complexe et impitoyable, qui attend une instruction CREATE TABLE, avec des exigences extrêmement spécifiques en matière de formatage et une marge de manœuvre nulle. Par exemple, si vous ne mettez pas 2 espaces après le mot clé PRIMARY, cela ne fonctionnera pas et de nombreuses autres restrictions.

Quelle est la bonne façon d'utiliser une table personnalisée?

Il n'y en a pas. La raison pour laquelle vous n'avez pas trouvé ce que vous cherchez, c'est parce que cela n'existe pas. WordPress fournit peu à rien en termes de support, conseils, infrastructure, interfaces ou aide pour l'utilisation de tableaux personnalisés.

La meilleure pratique courante est que les tables personnalisées sont rarement nécessaires et que, dans la plupart des cas, l'utilisation d'une table personnalisée est un signe que quelque chose s'est mal passé. La plupart des cas d'utilisation de tables personnalisées sont destinés à interagir avec des tables qui existent déjà ailleurs.

Y a-t-il des façons de rendre la vie plus facile pour vous-même? Oui! Mais ceux-ci ne sont pas spécifiques à WP, ce sont des choses évidentes telles que des abstractions et des fonctions d'emballage qui s'appliqueraient à tout programme PHP.

Par exemple, j’ai utilisé une fois la bibliothèque Doctrine ORM pour implémenter un ensemble de tables personnalisées. Le plugin contenait très peu de code WP, et aurait tout aussi bien pu être une application autonome PHP. Avec le recul, j'aurais pu le faire aussi bien avec des types de publication personnalisés et une taxonomie non publique.

Ce que vous devriez rechercher, c'est PHP un tableau personnalisé, et non pas spécifique à WP. En dehors de wpdb pour effectuer les requêtes, vous vous retrouvez dans une impasse


Soit dit en passant, avez-vous envisagé d'utiliser simplement une taxonomie utilisateur personnalisée ? Les taxonomies ne se limitent pas aux publications, elles sont destinées aux identifiants! Tant que cet identifiant est numérique et fait toujours référence au même type de chose, il peut s'agir de messages, commentaires, utilisateurs, numéros de maison, etc. Ne les mélangez pas.

6
Tom J Nowell