皆さん、私はプロジェクト上でこのポイントシステムを持っていますが、複数のユーザにmeta_valuesを追加することができない点を除いてすべて正常に動作します。Wordpressの複数のupdate_user_meta
私は<?php update_user_meta($user_id, $meta_key, $meta_value, $prev_value) ?>
を使用していますが、これは複数のユーザーでは機能しないようです。
皆さん、私はプロジェクト上でこのポイントシステムを持っていますが、複数のユーザにmeta_valuesを追加することができない点を除いてすべて正常に動作します。Wordpressの複数のupdate_user_meta
私は<?php update_user_meta($user_id, $meta_key, $meta_value, $prev_value) ?>
を使用していますが、これは複数のユーザーでは機能しないようです。
user_idsの配列をupdate_user_meta
に渡すだけですか?それは本当にうまくいかないでしょう。それが動作するはずですすべてuser_ids以上のループを使用して
:心の中でのワードプレスのデータベースの設計を維持しながら
foreach($user_ids as $user_id){
update_user_meta($user_id, $key, $value);
}
は、生成されるSQLを考えてみて。テーブルwp_usermeta
、カラムuser_id
、meta_key
およびmeta_value
があります。つまり、すべてのメタ値には、すべてのユーザーに対して、この表の行があります。特定のユーザーのためのmeta_key
がまだ存在しない場合、これは動作しないでしょうしかしあなたは
global $wpdb;
$ids = implode("', '", $user_ids);
$wpdb->query($wpdb->prepare("UPDATE {$wpdb->usermeta} SET meta_value = %s WHERE user_id IN ('{$ids}') AND meta_key = %s"), $value, $key);
としていくつかのコードを使用することができます。その後、INSERT
ステートメントが必要になります。ステートメントはバッチで実行することはできません。
次のような方法を試すことができます。
$user_meta_fields = array ('first_name', 'last_name', 'account_type', 'vd_sub_name', 'description', 'vd_adress', 'vd_cp', 'vd_ville', 'vd_department', 'vd_region', 'vd_country', 'vd_tel', 'vd_gsm', 'vd_fax', 'url');
foreach($user_meta_fields as $user_meta_field){
//echo "update_user_meta(".$user_id.", ".$user_meta_field.", ".$posted[$user_meta_field].");";
update_user_meta($user_id, $user_meta_field, $posted[$user_meta_field]);
}
いいえ、動作しません。 1人のユーザーのみが更新されます。 :( –
さらにコードをいくつか投稿してください、または自分でデバッグしようとしてください。 – Joost