Intereting Posts
Невозможно добавить «показанное изображение» в моей установке wordpress Изменение настроек по умолчанию, используемых коротким кодом галереи получать постоянные ссылки на сообщения в пользовательском типе сообщений, используя идентификатор сообщения Использовать избранное изображение сообщения в виде заголовка RSS / XML всех категорий и / или тегов Как редактировать php-файлы в Child Theme? Мета-запрос ужасно медленный Удалить цену из раскрывающегося меню переменной переменной Woocommerce Настройка частичного правостороннего интерфейса администратора Кошение сайта в другой домен простейшим способом Vanilla WordPress install, что можно / нужно положить в disable_functions? Лучший способ перенаправления категории на страницу и скрытие категории Перечислите таксономии в раскрывающемся списке панели параметров темы хвастаться тем, что вы читаете с помощью blogroll вашего любимого блога widget wordpress Неопределенное действие индекса Невозможно изменить заголовок

wp_create_user неправильно вводит пароль

Я пытаюсь создать нового пользователя после того, как кто-то заполнит форму. Я использую wp_create_user для этого. Пользователь создается правильно, но по какой-либо причине в таблицу users пароль не отправляется. Это просто пустое значение.

Прежде всего, я должен отметить, что, к сожалению, для этого проекта я на 3.1.3, и есть очень мало шансов, что я смогу использовать 3.2.1.

Я проверил, чтобы убедиться, что пароль правильный, до того, что он wp_create_user функции wp_create_user и значение будет таким, как ожидалось. Я также зашел так далеко, чтобы отследить пароль функции wp_insert_user . Он проходит через функцию wp_hash_password и wp_hash_password как хэш-код с 34 символами. Затем я проверил, чтобы узнать, какое значение пароля перед $wpdb->insert метода $wpdb->insert чтобы вставить пользователя. Пароль по-прежнему остается красивым хешем, а не пустым значением. Затем я оставил кролика целиком в методе $wpdb класса $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; } 

Solutions Collecting From Web of "wp_create_user неправильно вводит пароль"

PHP поддерживает списки аргументов переменной длины . Проще говоря, вы можете передать столько дополнительных аргументов, сколько хотите, и PHP даже не начнет мигать.

Если вы посмотрите на источник метода $wpdb->prepare() он просто извлекает все аргументы с func_get_args() в переменную и работает с этим. Он не заботится о сигнатуре функции (более старой или текущей) вообще.

Поэтому я думаю, что это совершенно не связано с вашей проблемой паролей, я бы попытался выкупить этот плагин.

PS 3.2 не сильно отличается от 3.1, почему проблема обновления? Запуск устаревшей версии – проблема в долгосрочной перспективе.