web-dev-qa-db-fra.com

Le plugin va trier les utilisateurs par usermeta

Au fur et à mesure que j'affinerai mon plugin le plus populaire, il stockera un numéro spécial décodé à partir de la date de naissance de l'utilisateur, qui est un champ BuddyPress étendu dans bp_xprofile_data. Tous les utilisateurs reçoivent un nombre compris entre 1 et 260, et je vais établir une liste des utilisateurs de BuddyPress en fonction de ce nombre.

Il semble qu'il existe au moins deux méthodes établies de stockage de données utilisateur étendues avec la table usermeta. Il y a 4 méthodes possibles que je peux imaginer:

  1. Utilisez la table BuddyPress bp_xprofile_data
  2. Utilisez la table usermeta
  3. Ajouter un champ à la table wp_users afin que je puisse obtenir user_id avec le "plus rapide PHP à l'ouest"
  4. Créer une nouvelle table pour mon plugin génial

Je veux un code efficace avec des ressources bien sûr, car il y a beaucoup de choses à faire.

La méthode recommandée consiste-t-elle à insérer le nombre dans la variable usermeta et à la récupérer avec une requête, quelque chose comme ceci?

$users_by_kin = "SELECT * 
    FROM ".$wpdb->prefix."usermeta 
    WHERE meta_key='kin_id' 
    AND meta_value='$kin_id'"

Quelle méthode est considérée comme la meilleure WP Pratiques?

1
cowboy

Si vous souhaitez utiliser les meilleures pratiques parmi les options répertoriées, utilisez la table méta de l'utilisateur.

La pire chose à faire est d’ajouter une colonne à la table des utilisateurs. Il est interdit de modifier la structure de la table WP par défaut.

Les deux autres options se situent quelque part entre, l’ajout de votre propre table étant le moins préféré.

Mais pourquoi n'utilisez-vous pas la classe WP_User_Query?

 $user_by_kin = new WP_User_Query( 
    array( 
        'meta_key' => 'kin_id', 
        'meta_value' => $kin_id, 
        'meta_compare' => '=' 
    ) 
);
0
butlerblog