如何在wordpress中更新多个meta_key的用户元数据

时间:2015-06-03 04:19:43

标签: php wordpress wordpress-theming meta-key

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

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

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

2 个答案:

答案 0 :(得分:8)

尝试:

<?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 );
}

因此,不是将数组传递给只接受$meta_key字符串参数的update_user_meta,而是遍历数组并为数组中的每个键/值对调用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)
);

答案 1 :(得分:3)

尝试使用相同的元键添加值,并记住将第三个值设置为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']