web-dev-qa-db-ja.com

ユーザーmeta_keyとmeta_value(値を配列として)を渡す方法

ユーザー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になります。どうすれば修正できますか?

1
Opsional

あなたがしていることは、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);
1
Drupalizeme