我正在尝试在有人填写表单后创建一个新用户。我正在使用wp_create_user
这样做。正在正确创建用户,但由于任何原因,没有向users
桌子它只是一个空白值。
首先,我应该注意到,不幸的是,对于这个项目,我使用的是3.1.3,而使用3.2.1的可能性很小。
我已检查以确保密码在传递给wp_create_user
函数,该值与预期值一致。我还将密码追溯到wp_insert_user
作用它通过wp_hash_password
函数,并显示为34个字符的密码哈希。然后,我检查了密码的值在$wpdb->insert
方法以插入用户。密码仍然是漂亮的哈希,而不是空值。然后我继续把兔子整只地放进_insert_replace_helper
的方法$wpdb
班提供给该函数的数据很好;但是,函数返回:
return $this->query( $this->prepare( $sql, $data ) );
我去看了
prepare
方法,定义为:
function prepare( $query = null ) { // ( $query, *$args )
是的,这个小注释来自实际代码。当我看到它时,我以为以前的开发人员已经做了这样的修改。起初我很愤怒,直到我把它与真实的文件区别开来,发现它是一样的。所以,我的困惑是
_insert_replace_helper
方法正在调用
prepare
方法,并在需要1时向其发送两个参数。这到底是怎么回事?
最后,我有两个问题:
1) 为什么我的密码没有被发送到数据库2)发生了什么_insert_replace_helper
方法将两个参数发送到prepare
方法
我应该注意,我用来添加用户的函数如下所示:
// Function for registering user
function gov_register_user($name, $password, $email, $company, $phone)
{
// If user is registered, don\'t register him/her again, but return true so no error is flagged
if(email_exists($email))
return true;
// If any of the necessary fields are not filled, return false
if($name == \'\' || $password == \'\' || $email == \'\')
return false;
// It\'s now safe to register the user
$user_id = wp_create_user($name, $password, $email);
if($user_id)
{
// Email user
add_filter(\'wp_mail_content_type\',create_function(\'\', \'return "text/html"; \'));
wp_mail($email, \'Registration\', get_mail_user_registration($name, $email));
// Set meta fields
set_cimyFieldValue($user_id, \'COMPANY\', $company);
set_cimyFieldValue($user_id, \'PHONE\', $phone);
// Log user in
$gov_creds = array(
\'user_login\' => $name,
\'user_password\' => $password,
\'remember\' => true
);
wp_signon($gov_creds, false);
return true;
}
else
return false;
}