我正在向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
,错误就消失了。
知道是怎么回事吗?
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, '' );
}
…可能会做你想做的。