我在WordPress中向用户添加其他元数据,每次使用get_user_meta
时都会收到此错误:Notice: Object of class WP_User could not be converted to int in /.../wp-includes/functions.php on line 2999
我的代码是
foreach( $metadata as $key => $value ) {
if ( !get_user_meta( $wcm_users[$i], $key, '' ) ) {
add_user_meta( $wcm_users[$i]->ID, $key, '' );
}
}
$ metadata是我要添加的其他元数据的数组,因此它是一个基本检查,以查看是否已添加元数据,如果没有,则添加。无法理解触发错误的内容。如果我删除get_user_meta
,则错误消失。
关于发生了什么的任何想法?
答案 0 :(得分:2)
get_user_meta()
采用整数ID。您正在传递WP_User
个对象。尝试:
foreach( $metadata as $key => $value ) {
if ( !get_user_meta( $wcm_users[$i]->ID, $key, '' ) ) {
add_user_meta( $wcm_users[$i]->ID, $key, '' );
}
}
另外,请注意get_user_meta()
的第三个(可选)参数是一个布尔值,表示您是要将值视为单个值还是数组 - 我猜你应该离开它关闭以获取单个值的默认行为。这就是你传递的空字符串将要做的事情(因为空字符串是一个布尔值false)但是你的代码并不那么明显。
此外,update_user_meta()
会添加元素,如果它不存在,并更新它,如果它存在,这就是你想说的,所以:
foreach( $metadata as $key => $value ) {
update_user_meta( $wcm_users[$i]->ID, $key, '' );
}
无论如何,......可能会做你想做的事。