7

我正在尝试为 WordPress 中的用户更新多个 meta_key

update_user_meta( $user_id, array( 'nickname' => $userFirstName, 'first_name' => $userFirstName, 'last_name' => $userLastName , 'city' => $userCityID , 'gender' => $userGenderID) );

但它不工作。我们如何为用户更新多个 meta_key?

4

2 回答 2

10

尝试:

<?php
$user_id = 1234;

$metas = array( 
    'nickname'   => $userFirstName,
    'first_name' => $userFirstName, 
    'last_name'  => $userLastName ,
    'city'       => $userCityID ,
    'gender'     => $userGenderID
);

foreach($metas as $key => $value) {
    update_user_meta( $user_id, $key, $value );
}

update_user_meta因此,不要将只接受字符串参数的数组传递给,而是$meta_key遍历数组并调用数组update_user_meta中的每个键/值对。

编辑:

WordPress 没有提供一次更新多个元数据的内置方法。使用它们的内置函数的部分原因是因为可以注册过滤器和钩子以对元信息进行操作。如果您直接更新它们,则不会调用它们。

也就是说,您可以尝试这样的事情(代码未经测试):

$columns  = implode(" = '%s', ", array_keys($metas)) . " = '%s'";
$values   = array_values($metas);
$values[] = $user_id;
$table    = _get_meta_table('user');
$sql      = "UPDATE $table SET $columns WHERE user_id = %d";
$wpdb->query(
    $wpdb->prepare($sql, $values)
);
于 2015-06-03T04:33:10.220 回答
5

只需尝试添加具有相同元键的值,并记住将第三个值设置为 false 就像

add_user_meta( $user_id , $meta_key , $value1 , false );
add_user_meta( $user_id , $meta_key , $value2 , false );
add_user_meta( $user_id , $meta_key , $value3 , false );

然后,当您使用元键获取用户元数据时,它将返回如下:

['$value1','$value2','$value3']
于 2018-01-31T09:41:32.640 回答