存储在循环

时间:2015-05-17 22:37:56

标签: php wordpress

我的循环中有问题。基本上我使用的是WordPress用户元函数update_user_meta,我创建了一个函数,用于在usermeta表中添加键和值。问题是我使用add_user_meta函数添加的第一个值是重复两次。我认为elseif在我运行if后也在运行,因为当我删除elseif时,没有重复的条目。

/**
 * [Add Custom User Meta Data]
 * @param [int] $userid    [User ID]
 * @param [string] $meta_key  [Meta Key to Alter]
 * @param [string] $new_value [Mata Value to Alter]
 */
function wp_postquiz_update_user_metadata($userid, $meta_key, $new_value ) {

    $oldMeta = get_user_meta($userid, $meta_key, true);

    if ( !get_user_meta($userid, $meta_key, false) ) {

        add_user_meta($userid, $meta_key, $new_value);

    } elseif ( is_array($oldMeta) && !in_array($new_value, $oldMeta) ) {

        if ( current_user_can('edit_user',$user_id) ){

            $oldMeta[] = $new_value;
            update_user_meta( $userid, $meta_key, $oldMeta);

        }
    }
}

我需要更新旧值,包括新值,如果还有其他方法可以让我知道..

谢谢...

2 个答案:

答案 0 :(得分:0)

仅使用update_user_meta功能! ,如果没有找到,则添加用户元

答案 1 :(得分:0)

它不是update_user_meta功能。我认为这是我使用的多维数组。没关系,我最终使用这个代码,万一有人需要它..

/**
 * [Add Custom User Meta Data]
 * @param [int] $userid    [User ID]
 * @param [string] $meta_key  [Meta Key to Alter]
 * @param [string] $new_value [Mata Value to Alter]
 */
function wp_postquiz_update_user_metadata($userid, $meta_key, $new_value ) {

    if ( !get_user_meta($userid, $meta_key, true) ) {

        $newMeta = array($new_value);
        add_user_meta($userid, $meta_key, $newMeta);

    } elseif (get_user_meta($userid, $meta_key, true) ) {

        // will return false if the previous value is the same as $new_value
        if ( current_user_can('edit_user',$user_id) ){

            $oldMeta = get_user_meta($userid, $meta_key, true);

            if( is_array($oldMeta) && !in_array($new_value, $oldMeta) ){
                $oldMeta[] = $new_value;
                update_user_meta( $userid, $meta_key, $oldMeta);
            } 
        }
    } else {

        wp_die('An error occured' );

    }

}