web-dev-qa-db-fra.com

Quelle est la méthode de base de données la plus efficace pour ajouter et interroger usermeta?

Quel est le moyen le plus efficace - en ce qui concerne la base de données - d’ajouter et de rechercher des champs usermeta supplémentaires dans un profil?

J'ai besoin d'ajouter quatre champs supplémentaires de données numériques et textuelles à un profil utilisateur, puis de demander à compiler les données à afficher dans un modèle. Et il y a potentiellement des milliers d'utilisateurs.

Il existe de nombreux exemples pour stocker les données dans usermeta. Mais cette quantité de données doit-elle être stockée dans la table usermeta?

Ou devrais-je tout stocker dans une nouvelle table de base de données? Et si oui, comment initialiser une nouvelle table puis y écrire?

2
markratledge

Il existe de nombreux exemples pour stocker les données dans usermeta. Mais cette quantité de données doit-elle être stockée dans la table usermeta?

Je ne vois aucune raison pour laquelle vous ne devriez pas utiliser la table de métadonnées de l'utilisateur par défaut, après tout, c'est ce à quoi elle sert, quelle que soit la quantité d'utilisateurs/de champs.

La méta fonction utilisateur, telle que get user meta utilise get_metadata avec l'objet $meta_type défini sur utilisateur. http://codex.wordpress.org/Function_Reference/get_metadata

Si vous voulez jouer avec de nouvelles tables, vous pouvez utiliser la classe $wpdb et en créer une nouvelle. Cet article explique comment http://codex.wordpress.org/Creating_Tables_with_Plugins .

Il existe également un plugin appelé Pods CMS qui permet la création de tables de base de données personnalisées pour les types de contenu, mais à moins que vous n'ayez une raison spécifique de le faire, utilisez simplement les méta-tables utilisateur intégrées.

3
Wyck

J'ai un site Web (et bien un de mes clients l'a) qui compte un peu plus de 5000 utilisateurs et pour chaque utilisateur, nous stockons 9 champs méta différents (lignes) dans la table usermeta et je ne vois vraiment aucun problème avec cela, je vais ajoutons que 6 de ces méta-champs sont en fait des tableaux de données contenant 4 à 13 valeurs différentes (Integer, String et Boolean), de sorte que dans la plupart des cas, nous ne faisons qu'un appel get_user_meta() pour toutes les valeurs nécessaires de cette page. et les 3 autres champs sont des champs que nous devons interroger afin qu'ils ne puissent pas être dans un tableau.

Ainsi, dans l’ensemble, chaque utilisateur dispose de 80 à 96 champs personnalisés, tous stockés sur 9 lignes.

Maintenant, après cela, l'utilisation d'une table personnalisée sera plus rapide (simple fait), mais cela en vaut-il la peine?

2
Bainternet