【问题标题】:Cannot set user password in wordpress无法在wordpress中设置用户密码
【发布时间】:2012-09-15 11:19:09
【问题描述】:

我已经尝试了所有我能找到的方法来设置注册时的用户密码,但没有成功......我显示了字段,验证(如果密码匹配等)我在屏幕上打印它们,我打印用户 ID在屏幕上,所以需要的每个参数都在那里,但该功能似乎根本不起作用...... 这不起作用...

$newpassword = "zzzzzz";

update_user_meta($user_id, 'user_pass', $newpassword);

这也不行……

add_action( 'user_register', 'ts_register_extra_fields', 10 );
function ts_register_extra_fields($user_id, $password='11',$meta = array()){
    $userdata = array();
      if ( $_POST['password'] !== '' ) {
       $userdata['user_pass'] = $_POST['password'];
    }
    $new_user_id = wp_update_user( $userdata );
  }

我的客户明天需要这个,所以我现在完全迷路了,我不知道为什么它不起作用......

忘记添加了,所有这些代码都是在我的主题的functions.php中添加的。 (正如我已经说过的,我在屏幕上发布了变量)。

add_action( 'user_register', 'ts_register_extra_fields', 100 );

function ts_register_extra_fields( $user_id, $password = '', $meta = array() ) {

    $userdata = array();

    $userdata['ID'] = $user_id;

    $userdata['contacto'] = $_POST['contacto'];

    $userdata['nif'] = $_POST['nif'];

     if ( $_POST['password'] !== '' ) {
         $userdata['user_pass'] = $_POST['password'];
         echo "im in";
     }
     $new_user_id = wp_insert_user( $userdata );

     echo "id-".$userdata['ID'];

     echo "contacto-".$userdata['contacto'];

     echo "nif-".$userdata['nif'];

     echo "pass-".$userdata['user_pass'];
}

所有这些回声都输出正确的数据...例如 id = 195 下次我尝试 196 等... contacto 和 nif 显示了我在自定义注册字段中输入的数据,并且 pass 还显示了我在自定义注册字段密码中输入的数据...

【问题讨论】:

  • 你是如何设置 $user_id 的?
  • 也不是,我用了一个已经创建好的用户ID,还是不行。已经用 wp_insert_user 测试过,加了个大号,也不行……

标签: wordpress login passwords


【解决方案1】:

哈!发现错误。我安装了另一个名为“新用户批准”的插件,它需要管理员批准才能让用户登录。当管理员接受用户登录时,该插件生成另一个密码(以便能够以可读模式将密码发送给用户),使我在用户注册时所做的密码更新无效(因为它在之后生成了一个随机密码管理员接受)。

我通过禁用插件并测试functions.php 发现了这一点。它确实奏效了。为了使它们都能正常工作,我只是删除了插件中生成随机密码的代码。尽管用户不会通过电子邮件收到帐户摘要。它可以满足我的需求。

最好的问候, 视频编码器

【讨论】:

    【解决方案2】:

    首先,我认为 WordPress 正在使用 MD5 加密密码。

    $hash = wp_hash_password( $newpassword );
    // then wp_update_user with $hash as the user_pass value
    

    其次,您不应通过 Internet 以明文形式发送密码。如果你可以在发送之前用javascript加密密码,那可能会更安全。

    最后,通过在wp_update_user 中指定 ID 来尝试更新现有用户。

    【讨论】:

    • 对不起,密码是“zzzzzzz”,因为我很绝望。它根本没有设置任何东西,只是保留了它通过电子邮件发送的随机密码
    • 我没有,过会再回复。
    • 也不起作用... :( 我做了以下 wp_insert_user( array ('ID' => 350, 'user_url' => "www.www.www") ) ;
    猜你喜欢
    • 2019-09-21
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 2015-10-26
    相关资源
    最近更新 更多