如何在Wordpress中更新多个meta_key的用户元 [英] How to update user meta for multiple meta_key in wordpress

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

问题描述

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

I'm trying to update multiple meta_key for user in WordPress

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

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

but it is not working. How can we update multiple meta_key for user?

推荐答案

尝试:

<?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 ,该数组仅接受,遍历数组,并为数组中的每个键/值对调用update_user_meta.

So instead of passing your array to update_user_meta which only accepts string arguments for $meta_key, loop over the array and call update_user_meta for each key/value pair in the array.

WordPress没有提供一种内置的方式来一次更新多个meta.使用其内置功能的部分原因是因为可以注册过滤器和挂钩以对元信息进行操作.如果直接更新它们,将不会调用它们.

WordPress doesn't give a built in way to update multiple metas at once. Part of the reason for using their built in function is because filters and hooks can be registered to operate on the meta information. These won't be called if you update them directly.

也就是说,您可以尝试执行以下操作(未经测试的代码):

That said, you can try something like this (code untested):

$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)
);

这篇关于如何在Wordpress中更新多个meta_key的用户元的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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