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

Fad*_*adi 6 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) );
Run Code Online (Sandbox Code Playgroud)

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

dre*_*010 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 );
}
Run Code Online (Sandbox Code Playgroud)

因此,不是将您的数组传递给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)
);
Run Code Online (Sandbox Code Playgroud)

  • 我正在尝试使用一次更新来更新所有元数据字段 (2认同)
  • 请记住,如果值不存在,`update_user_meta()` 也会插入该值。直接在数据库上运行 `UPDATE` 查询只会更新现有值。 (2认同)

小智 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 );
Run Code Online (Sandbox Code Playgroud)

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

['$value1','$value2','$value3']
Run Code Online (Sandbox Code Playgroud)