$dobs=$_REQUEST['day'].'_'.$_REQUEST['month'].'_'.$_REQUEST['year'];
$gender=$_REQUEST['gender'];
$country=$_REQUEST['country'];
$state=$_REQUEST['state'];
$city=$_REQUEST['city'];
update_user_meta( $user_id, 'date_of_birth', $dobs, true );
update_user_meta((int) $user_id, 'gender', (int) $gender, true );
update_user_meta( $user_id, 'country', $country, true );
update_user_meta( $user_id, 'state', $state, true );
update_user_meta( $user_id, 'city', $city, true );
这里我尝试类似转换(int)(字符串)有趣的部分是插入正常工作,不知道DB结构中是否有错误。
答案 0 :(得分:2)
您需要删除update_user_meta
update_user_meta( $user_id, 'date_of_birth', $dobs );
wordpress使用第4个参数仅更新前一个值等于第4个参数值的字段
因此wordpress正在寻找对该用户具有先前值true的date_of_birth
更多info
答案 1 :(得分:0)
update_user_meta() - 根据用户ID更新用户元字段。一般只有三个参数,第四个是可选的。第四个参数是
$prev_value
,默认情况下是''价值观。因此,第4个参数将检查更新的meta_key
是否具有之前的值。
例如:
<?php
$user_id = 1;
$website_url = 'http://wordpress.org';
update_user_meta($user_id, 'user_url', $website_url, TRUE);
// The above statement will update the user_meta table corresponding to the user_id=1
?>
注意:前3个参数是必需的。没有它,它将无法工作。
请确保第二个值为&#39;在update_user_meta()中应该存在于数据库表中。
根据问题作者情景:
update_user_meta( $user_id, 'date_of_birth', $dobs, true );
它必须包含所有3个参数,即$user_id
,date_of_birth
和$dobs
。