ユーザーmeta_keyをmeta_valueに渡したいのですが、meta_value配列は次のようになります。
$user_biodata = array(
'register_facebook_id' => 1311064406686333,
);
ユーザーがこの機能を介して既に登録されているかどうか確認したいです。
$wp_users = get_users(array(
'number' => 1,
'count_total' => false,
'fields' => 'id',
'meta_query' => array(
array(
'meta_key' => 'user_biodata',
'meta_value' => array( 'register_facebook_id' => 1311064406686333 ),
)
),
));
しかし、値が存在しなくても結果は常に1になります。どうすれば修正できますか?
あなたがしていることは、WPからシリアライズデータを取得してチェックするための有効な方法ではありません。あなたはユーザーメタとして配列を挿入することができますが、舞台裏のこの配列はMySqlが処理できる文字列何かをシリアル化するために変換されます。
LIKE演算子で検索するためのオプションはありますが、予期しない結果につながる可能性があるため、この使用を推奨しません。
$args = array(
'number' => 1,
'count_total' => false,
'fields' => 'ID',
'meta_query' => array(
array(
'key' => 'user_biodata',
'value' => 'yourValue',
'compare' => 'LIKE',
),
),
);
$users = get_users($args);