更新用户meta()不起作用

时间:2017-12-13 作者:Limpuls

昨天我问了一个问题,但我意识到代码不正确,这是我的错,所以我重构了一切。我有一个带有两个字段的表单,当用户提交并参加测验时,该表单会被注册,他的分数会保存到用户元数据表中。我的用户被创建了,但是当我想使用update_user_meta 它什么都没做。这是我的代码:

 if (isset($_POST[\'submit_contact\'])) {
   $email = $_POST[\'email_contact\'];
   $full = $_POST[\'fullname_contact\'];


    $_SESSION["email"] = $email;
    $_SESSION["name"] = $full;
    echo $_SESSION["mail"];
   }

function save_quiz_score() {


     $score = $_POST[\'score\'];


    $email = $_SESSION["email"];
    $username = $_SESSION["name"];
    $user = get_user_by("email", $email);
    register_new_user($email, $_SESSION["email"]);
    update_user_meta($user, "quiz_scores", $score);

    echo $_SESSION["mail"];

 }
我正在使用session_start 并将会话回送出去,可以看到电子邮件,所以这没有问题。$_POST[\'score\'] 也是有效的,因为过去我试着自己保存它,效果很好,所以这也不是问题。我只是觉得我什么都试过了,想放弃。也许一双额外的眼睛可以帮助我注意到一个问题。提前谢谢。

2 个回复
最合适的回答,由SO网友:Shibi 整理而成

设置变量$user 创建此用户之前。。

应该是这样的,您需要检查用户是否已经存在

$user = get_user_by("email", $email); // Its return you the user object
if($user) {
    update_user_meta($user->ID, "quiz_scores", $score);
} else {
    $user_id = register_new_user($email, $_SESSION["email"]);
    update_user_meta($user_id, "quiz_scores", $score);
}

SO网友:Limpuls

通过更改以下行解决了问题:

register_new_user($email, $_SESSION["email"]);
update_user_meta($user, "quiz_scores", $score);
对此:

$registered = register_new_user($email, $_SESSION["email"]);
    update_user_meta($registered, "quiz_scores", $score);
在第一个示例中,我试图在实际注册之前从数据库中获取用户:

$user = get_user_by("email", $email);
所以使用$user 内部变量update_user_meta() 只是不起作用。

结束

相关推荐

Insert Data into Database

我是为wordpress开发插件的新手。我需要一个公式,所有的网站浏览者可以填写数据并发送它。这个send it-按钮应将其保存到数据库。因此,我认为应该这样定义插件中的快捷方式和公式:function formular() { return \'This is html of Formular\'; } add_shortcode(\"formular\", \"formular\"); 但是现在我不知道如何用按钮定义公式来将数据保存到数据库中。已添加应保存数据的数