我的循环中有问题。基本上我使用的是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);
}
}
}
我需要更新旧值,包括新值,如果还有其他方法可以让我知道..
谢谢...
答案 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' );
}
}