Wordpress中的多个update_user_meta

Vla*_*d.P 0 php wordpress

大家好,我在项目上有这个积分系统,除了我不能向多个用户添加meta_values之外,其他所有东西都正常运行。

我正在使用,<?php update_user_meta( $user_id, $meta_key, $meta_value, $prev_value ) ?> 但这似乎不适用于多个用户。

任何的想法?

Joo*_*ost 5

您是否只是将带有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_idmeta_keymeta_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,您将需要一个语句,而您不能批量执行该语句。