web-dev-qa-db-ja.com

usersテーブルとusermetaテーブルはWordpressコアのどの部分で結合されますか?

私はWordpressインクルードクラスの巨大なジャングルの中でusermetaテーブルがusersテーブルに結合されているところだけで解決しようとしていますが、そうであればどのように機能しますか?

私にとってusermetaテーブルについての1つの紛らわしいことはそれがデータベースフィールドのためにキー/値フィールドを使用していて、first_nameやlast_nameのような実際の値ではないということです。 Wordpressはデフォルトでどのフィールドを引き出すべきかを知り、usermetaフィールドにデータを追加したりそこからデータを取得するためのフック、アクションそしてフィルタはありますか?

1

私はあなたが尋ねていることが100%ではない、それはいくつかの質問のように思えますか?しかし、ここに行きます:

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

例えば:

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

フックを追加するために私はこの答えはあなたが探しているものかもしれないと思いますか?

更新

私が追加しますいくつかのフォローアップのコメントに基づいて:

  1. /wp-includes/user.phpからの関数get_user_metavalues($user_ids)はユーザーデータ配列の配列を返します。

  2. 関数get_userdata()は、/wp-includes/pluggable.phpからget_user_metavalues($user_ids)を使用してユーザー値を取得し、ユーザーデータオブジェクトを返します。

  3. ユーザーメタは/wp-includes/meta.phpにある一般的なメタデータ関数を通して管理されているので、もしwp_usersとwp_usermetaの間のSQL JOINを探しているのであれば、それを見つけることはほとんどないでしょう。そのファイルには、次の機能が含まれています。

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