Wordpress 中的多个 update_user_meta [英] Multiple update_user_meta in Wordpress

查看:21
本文介绍了Wordpress 中的多个 update_user_meta的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嘿伙计们,我在一个项目上有这个积分系统,一切正常,只是我无法向多个用户添加元值.

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_idmeta_keymeta_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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆