web-dev-qa-db-fra.com

Dans quelle partie du noyau Wordpress la table users et la table usermeta sont-elles jointes?

J'ai essayé de déterminer exactement où, dans la jungle massive de Wordpress, la classe usermeta est reliée à la table des utilisateurs et, dans l'affirmative, comment fonctionne-t-il?

La seule chose qui me dérange au sujet de la table usermeta, c’est qu’elle utilise des champs clé/valeur pour les champs de la base de données et non des valeurs réelles comme prénom ou nom. Comment Wordpress sait-il quels champs extraire par défaut et existe-t-il des points d'ancrage, des actions et des filtres pour l'ajout et la récupération de données à partir du champ usermeta?

1
Dwayne Charrington

Je ne suis pas à 100% ce que vous demandez, cela ressemble à plusieurs questions? Mais voici:

 $meta_value = get_user_meta($user_id, $key, $single);

Par exemple:

 $first_name = get_user_meta($user_id, 'first_name', true);

En ce qui concerne l’ajout de crochets, je pense que cette réponse pourrait être ce que vous recherchez?

METTRE À JOUR

Sur la base de quelques commentaires, j'ajouterai:

  1. La fonction get_user_metavalues($user_ids) de /wp-includes/user.php renverra un tableau de tableaux de données utilisateur.

  2. La fonction get_userdata() récupère les valeurs utilisateur à l'aide de get_user_metavalues($user_ids) à partir de /wp-includes/pluggable.php et renvoie un objet de données utilisateur.

  3. User Meta est géré via les fonctions de métadonnées génériques trouvées dans /wp-includes/meta.php. Par conséquent, si vous recherchez un SQL JOINentre wp_users et wp_usermeta, il est peu probable que vous en trouviez un. Ce fichier comprend les fonctions suivantes:

add_metadata($meta_type,$object_id,$meta_key,$meta_value,$unique=false)
update_metadata($meta_type,$object_id,$meta_key,$meta_value,$prev_value='')
delete_metadata($meta_type,$object_id,$meta_key,$meta_value='',$delete_all=false)
get_metadata($meta_type,$object_id,$meta_key='',$single=false)
update_meta_cache($meta_type,$object_ids)
2
MikeSchinkel