7

WordPress でユーザーの複数の meta_key を更新しようとしています

update_user_meta( $user_id, array( 'nickname' => $userFirstName, 'first_name' => $userFirstName, 'last_name' => $userLastName , 'city' => $userCityID , 'gender' => $userGenderID) );

しかし、それは機能していません。ユーザーの複数の meta_key を更新するにはどうすればよいですか?

4

2 に答える 2

10

試す:

<?php
$user_id = 1234;

$metas = array( 
    'nickname'   => $userFirstName,
    'first_name' => $userFirstName, 
    'last_name'  => $userLastName ,
    'city'       => $userCityID ,
    'gender'     => $userGenderID
);

foreach($metas as $key => $value) {
    update_user_meta( $user_id, $key, $value );
}

update_user_metaしたがって、の文字列引数のみを受け入れる配列を渡す代わりに、配列を$meta_keyループして、配列内update_user_metaの各キーと値のペアを呼び出します。

編集:

WordPress には、複数のメタを一度に更新する方法が組み込まれていません。組み込み関数を使用する理由の 1 つは、フィルタとフックを登録してメタ情報を操作できるからです。直接更新すると、これらは呼び出されません。

そうは言っても、次のようなことを試すことができます(コードはテストされていません):

$columns  = implode(" = '%s', ", array_keys($metas)) . " = '%s'";
$values   = array_values($metas);
$values[] = $user_id;
$table    = _get_meta_table('user');
$sql      = "UPDATE $table SET $columns WHERE user_id = %d";
$wpdb->query(
    $wpdb->prepare($sql, $values)
);
于 2015-06-03T04:33:10.220 に答える
5

同じメタキーで値を追加してみてください.3番目の値を false に設定することを忘れないでください.

add_user_meta( $user_id , $meta_key , $value1 , false );
add_user_meta( $user_id , $meta_key , $value2 , false );
add_user_meta( $user_id , $meta_key , $value3 , false );

次に、メタ キーでユーザー メタを取得すると、次のように返されます。

['$value1','$value2','$value3']
于 2018-01-31T09:41:32.640 に答える