Je suis rarement en désaccord avec des utilisateurs par ailleurs bien informés, mais dans ce cas, je ne peux pas m'en empêcher. À mon avis, qualifier de mauvaise pratique l'utilisation de tables de base de données non essentielles est tout simplement faux.
Le choix entre utiliser des tables de base ou ajouter les vôtres dépend de plusieurs facteurs.
Le temps d'exécution d'une requête dépend de la taille de la table. Par conséquent, si vous prévoyez de stocker des quantités importantes de données, une table distincte réservée à ce seul type d'ensemble de données spécifique sera inévitablement la solution la plus efficace.
Si vous stockez un grand nombre de publications régulières ou CPT à côté de ces ensembles de données spécifiques, wp_posts
ainsi que wp_postmeta
peut croître rapidement.
Pour moi, ce choix dépend en fin de compte de la "position" des données. Doit-il prendre en charge un auteur, des commentaires, des révisions, des extraits ou similaires? Si oui, j'irai avec des CPT et / ou des fonctionnalités de base. Sinon, je vais utiliser des tableaux séparés pour des raisons d'utilisation des ressources et d'efficacité.
Si la notion d'Eugène était correcte, aucun des plugins bien écrits existants n'ajouterait leurs propres tables, ce qui n'est heureusement pas le cas.
L'utilisation des tables de base de données WP est recommandée
$wpdb
classe très puissante .wp_options
, et en forçant le développeur du plug- in à examiner attentivement le type de données créées / stockées - est-ce un CPT? est-ce une taxonomie? est-ce post meta?WordPress fournit un moyen pour les plugins d'ajouter des tables à sa base de données
Cependant, pour les cas d'utilisation où une table de base de données distincte est nécessaire, veillez à utiliser la méthode fournie par WordPress pour ajouter votre table personnalisée à la base de données WordPress , en particulier pour que vous puissiez profiter de la
$wpdb
classe puissante . Notez les informations / mises en garde de cette liste d'entrées Codex:Ainsi, nous pouvons conclure ce qui suit:
la source
$wpdb
(l'utiliser avec des tables non-core était implicite dans ma réponse, je ne voudrais pas manquer cette classe)Les tables de base de données non essentielles sont indispensables si vos données sont plus complexes que le modèle de publication WordPress, elles vont être énormes et elles contiennent beaucoup de méta-détails qui seront recherchés.
Le format EAV que WordPress utilise pour sa publication meta ne se prête pas bien à la recherche multicritère.
Si vous divisez votre méta en plusieurs entrées, vous aurez de nombreuses entrées par publication dans la table des méta-publications, et la recherche de n'importe quelle publication via les métas sera beaucoup plus lente.
Si vous stockez toutes les métas sérialisées dans un tableau et que vous ne les avez qu'une seule entrée dans la méta post, cette fois, vous serez obligé de faire uniquement des recherches de texte à l'intérieur de cette méta, et vous ne pourrez pas utiliser d'opérateurs de comparaison directement dans votre requête SQL.
Pas un gros problème si votre plugin ne va pas avoir des milliers d'entrées et des méta associées.
Mais un problème majeur si votre plugin va faire quelque chose de grand.
Votre situation, un nom de fichier comme entrée indépendante et 3 entrées de métadonnées attachées à cette entrée ne semblent pas si grandes. Vous pouvez utiliser la table de publication wordpress et la méta-table pour cela.
MAIS, si les gens vont souvent chercher ces 3 métas, PARTICULIÈREMENT en conjonction, alors je vous recommande de mettre en place des tables séparées.
Avec ce format, une seule table avec une seule entrée, qui contient également toutes les métas, serait correcte et interrogerait rapidement.
Par ailleurs, si vous utilisez des tableaux WordPress et que vous utilisez également la mise en cache des requêtes, l'utilisateur recherche vos données serait mis en cache au fil du temps et encourra moins de charge. Mais ce ne serait pas aussi prudent que de faire des tableaux séparés.
la source
Vous pouvez télécharger vos fichiers dans la bibliothèque multimédia. Chaque élément de la bibliothèque multimédia est stocké dans la
wp_posts
table. Cela signifie que chaque fichier peut avoir des métadonnées. Vous pouvez enregistrer autant d'informations que nécessaire pour chaque fichier duwp_postmeta
tableau à l'aide de l' API de métadonnées .Oui, c'est une mauvaise pratique de créer sa propre table, si vous pouvez utiliser à la place les fonctionnalités de base.
la source
la source