Wordpress 中的多个 update_user_meta [英] Multiple update_user_meta in Wordpress
问题描述
嘿伙计们,我在一个项目上有这个积分系统,一切正常,只是我无法向多个用户添加元值.
Hey guys, I have this points system on a project, everything works fine except that I can't add meta_values to multiple users.
我正在使用 <?php update_user_meta( $user_id, $meta_key, $meta_value, $prev_value ) ?>
但这似乎不适用于多个用户.
I'm using <?php update_user_meta( $user_id, $meta_key, $meta_value, $prev_value ) ?>
but this seems to not work with multiple users.
有什么想法吗?
推荐答案
您是否只是将带有 user_ids 的数组传递给 update_user_meta
?那么它确实不起作用.
Do you simply pass an array with user_ids to update_user_meta
? Then it won't work indeed.
对所有 user_id 使用循环它应该可以工作:
Using a loop over all user_ids it should work:
foreach($user_ids as $user_id){
update_user_meta($user_id, $key, $value);
}
考虑生成的 SQL,同时牢记 WordPress 的数据库设计.它有 wp_usermeta
表,包含 user_id
、meta_key
和 meta_value
列.这意味着对于每个用户,每个元值在此表中都有一行.您可以使用一些代码作为
Think about the SQL being generated, while keeping in mind the database design of WordPress. It has the table wp_usermeta
, with columns user_id
, meta_key
and meta_value
. That means that every meta value has a row in this table, for every user. You could use some code as
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
语句,这是您无法批量执行的.
However this would not work if the meta_key
for a certain user does not exist yet. You would then need an INSERT
statement, which you can't do in a batch.
这篇关于Wordpress 中的多个 update_user_meta的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!