大家好,我在项目上有这个积分系统,除了我不能向多个用户添加meta_values之外,其他所有东西都正常运行。
我正在使用,<?php update_user_meta( $user_id, $meta_key, $meta_value, $prev_value ) ?> 但这似乎不适用于多个用户。
任何的想法?
您是否只是将带有user_ids的数组传递给update_user_meta?那就真的行不通了。
在所有user_id上使用循环应该可以工作:
foreach($user_ids as $user_id){
update_user_meta($user_id, $key, $value);
}
Run Code Online (Sandbox Code Playgroud)
考虑一下生成的SQL,同时牢记WordPress的数据库设计。它具有表wp_usermeta,以列user_id,meta_key和meta_value。这意味着对于每个用户,每个元值在此表中都有一行。您可以使用一些代码作为
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);
Run Code Online (Sandbox Code Playgroud)
但是,如果meta_key某个用户的尚不存在,则此方法将无效。然后INSERT,您将需要一个语句,而您不能批量执行该语句。
| 归档时间: |
|
| 查看次数: |
6283 次 |
| 最近记录: |