Php 使用get_user_meta时,WP中出现此错误的原因是什么?

Php 使用get_user_meta时,WP中出现此错误的原因是什么?,php,wordpress,Php,Wordpress,我正在WordPress中向用户添加额外的元数据,每次使用get\u user\u meta时,我都会遇到以下错误:注意:WP\u user类的对象无法在/WP includes/functions.php第2999行转换为int 我的代码是 foreach( $metadata as $key => $value ) { if ( !get_user_meta( $wcm_users[$i], $key, '' ) ) { add_user_m

我正在WordPress中向用户添加额外的元数据,每次使用
get\u user\u meta
时,我都会遇到以下错误:
注意:WP\u user类的对象无法在/WP includes/functions.php第2999行转换为int

我的代码是

foreach( $metadata as $key => $value ) {

        if ( !get_user_meta( $wcm_users[$i], $key, '' ) ) {

            add_user_meta( $wcm_users[$i]->ID, $key, '' );

        }

    }
$metadata是我要添加的附加元数据的数组,因此这是一个基本检查,以查看元数据是否已添加,如果未添加,则为加载项。无法理解是什么触发了错误。如果我删除
get\u user\u meta
错误就会消失

你知道发生了什么事吗

接受一个整数ID。您正在向它传递一个
WP\u用户
对象。尝试:

    foreach( $metadata as $key => $value ) {

        if ( !get_user_meta( $wcm_users[$i]->ID, $key, '' ) ) {

            add_user_meta( $wcm_users[$i]->ID, $key, '' );

        }

    }
另外,请注意,
get\u user\u meta()
的第三个(可选)参数是一个布尔值,用于指示是否要将该值视为单个值或数组—我猜您应该将其关闭以获取单个值的默认行为。这就是您要传递的空字符串将要做的事情(因为空字符串是布尔值false),但从代码中看这并不是很明显

此外,如果元数据不存在,将添加该元数据,如果存在,将更新该元数据,这就是您所说的要执行的操作,因此:

foreach( $metadata as $key => $value ) {
    update_user_meta( $wcm_users[$i]->ID, $key, '' );
}

…无论如何,可能会做你想做的事。

事实的确如此!谢谢我还不能接受答案(需要等10分钟)。很快就可以了,没问题。我也在我的答案中加入了可能更干净的解决方案。太好了!听起来更整洁!