2010-12-28 18 views
0

皆さん、私はプロジェクト上でこのポイントシステムを持っていますが、複数のユーザにmeta_valuesを追加することができない点を除いてすべて正常に動作します。Wordpressの複数のupdate_user_meta

私は<?php update_user_meta($user_id, $meta_key, $meta_value, $prev_value) ?>を使用していますが、これは複数のユーザーでは機能しないようです。

答えて

4

user_idsの配列をupdate_user_metaに渡すだけですか?それは本当にうまくいかないでしょう。それが動作するはずですすべてuser_ids以上のループを使用して

:心の中でのワードプレスのデータベースの設計を維持しながら

foreach($user_ids as $user_id){ 
    update_user_meta($user_id, $key, $value); 
} 

は、生成されるSQLを考えてみて。テーブルwp_usermeta、カラムuser_idmeta_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ステートメントが必要になります。ステートメントはバッチで実行することはできません。

+0

いいえ、動作しません。 1人のユーザーのみが更新されます。 :( –

+0

さらにコードをいくつか投稿してください、または自分でデバッグしようとしてください。 – Joost

2

次のような方法を試すことができます。

$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]); 
     } 
関連する問題