使用get_user_meta时WP中导致此错误的原因是什么?

时间:2014-06-19 08:45:54

标签: php wordpress

我在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,则错误消失。

关于发生了什么的任何想法?

1 个答案:

答案 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, '' );
}
无论如何,

......可能会做你想做的事。