wordpress更新元无法正常工作

时间:2017-11-15 05:22:50

标签: php mysql wordpress meta

嘿,我正在尝试更新用户元,但它没有更新

  $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结构中是否有错误。

2 个答案:

答案 0 :(得分:2)

您需要删除update_user_meta

的第4个参数

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_iddate_of_birth$dobs