嗨,我有这点上一个项目的系统,一切正常,只是我不能meta_values添加到多个用户的罚款。
我使用<?php update_user_meta( $user_id, $meta_key, $meta_value, $prev_value ) ?>
但这似乎不能与多个用户的工作。
任何想法?
嗨,我有这点上一个项目的系统,一切正常,只是我不能meta_values添加到多个用户的罚款。
我使用<?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生成,同时牢记的WordPress的数据库设计。 它具有表wp_usermeta
,与列user_id
, meta_key
和meta_value
。 这意味着,每一个meta值有一个排在该表中,对每一位用户。 你可以使用一些代码
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);
但是,如果这是行不通的meta_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]);
}