Пользовательские поля пользователя, страница регистрации и виджет входа в WordPress - PullRequest
1 голос
/ 11 апреля 2011

Вот ситуация: у меня есть старый сайт со старой базой данных (MySQL).Я хотел бы перенести этих пользователей в WordPress без потери старых данных (идентификаторы рецептов, пользовательские поля и т. Д.).

Помимо этого, я хотел бы создать пользовательскую страницу регистрации со всеми (дополнительными)пользовательские данные, которые у меня уже были на старом сайте.

Я пытался найти некоторые плагины (члены WP, Виджет регистрации, Register Plus Redux и т. д.), но все они не соответствовали моей цели.

Я начинаю думать, что мне, вероятно, нужно самому написать код, но это сделает Wordpress неспособным к обновлению.

У кого-нибудь есть решение этой проблемы?

ThxРик

1 Ответ

1 голос
/ 11 апреля 2011

Должно быть довольно просто, хотя вам может потребоваться назначить новый пароль пользователям. Обычно это нормально для пользователей, если они знают, что это произойдет.

Возьмите старую базу данных и выполните простой SQL-запрос для извлечения данных, затем используйте некоторый код, подобный следующему, для создания нового пользователя для каждого пользователя в вашей старой базе данных:

$newuser = array(
            'user_pass' => wp_generate_password( 12,0 ),
            'user_login' => $email,
            'user_nicename' => $name['first'].' '.$name['last'],
            'user_email' => $email,
            'display_name' => $name['first'].' '.$name['last'],
            'nickname' => $name['first'].' '.$name['last'],
            'first_name' => $name['first'],
            'last_name' => $name['last'],
            //''
        );

        $user_id = wp_insert_user($newuser);
        wp_new_user_notification($user_id, $newuser['user_pass']);

Этот код работает с WordPress 3.1. В этом примере вы просто хотите заменить переменные $ name данными, которые вы предоставили из своей старой базы данных.

Последние две строки важны, потому что именно здесь происходит настоящая работа. Функция wp_insert_user создаст пользователя (или выдаст ошибку, если вам не хватает информации), а функция wp_new_user_notification отправит им электронное письмо с их паролем. Я очень рекомендую потратить время на переписывание нового плагина уведомлений пользователя ( это подключаемая функция , так что вы можете просто скопировать вставить его в файл functions.php и внести изменения там ), чтобы пользователи электронной почты имеют смысл. Вы также можете написать свою собственную функцию электронной почты или, если ваши пароли хранятся в виде простого текста, просто передайте эту информацию в WP.

Редактировать: Я пропустил вашу потребность в настраиваемых полях, Gravity Forms делает это довольно хорошо, но вы можете добавить настраиваемое поле для любого пользователя с помощью функции update_user_meta . Так что в приведенном выше примере кода вы просто хотите добавить что-то вроде этого:

update_user_meta($user_id, "my_custom_data_key", "my_custom_data_value");

Чтобы получить эти данные для отображения, вы просто используете get_user_meta:

print get_user_meta($user_id, "my_custom_data_key");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...