Как легко отобразить форму регистрации пользователей на фронтенде?
Я ищу простой способ разместить форму регистрации пользователей на фронтенде WordPress сайта. Я уже использовал wp_login_form() для размещения формы входа на фронтенде, но теперь мне нужно сделать то же самое с формой регистрации.
Есть идеи?

Джефф Старр написал отличный туториал по фронтенд-регистрации, входу и восстановлению пароля
используя подход, схожий с предложенным onetrickpony.
Так что считайте это продолжением его ответа и дополнительным ресурсом, который может помочь вам в реализации:
http://digwp.com/2010/12/login-register-password-code/
Теперь у вас есть два примера, как реализовать это самостоятельно — и поверьте мне, однозначно стоит сделать это именно так (своим способом). Это не так сложно и даёт вам свободу, гибкость и возможность повторного использования, которые не может предложить ни один плагин.

если вы хотите обработать это самостоятельно, вот что я использую:
add_action('template_redirect', 'register_a_user');
function register_a_user(){
if(isset($_GET['do']) && $_GET['do'] == 'register'):
$errors = array();
if(empty($_POST['user']) || empty($_POST['email'])) $errors[] = 'укажите имя пользователя и email';
if(!empty($_POST['spam'])) $errors[] = 'уходи, спамер';
$user_login = esc_attr($_POST['user']);
$user_email = esc_attr($_POST['email']);
require_once(ABSPATH.WPINC.'/registration.php');
$sanitized_user_login = sanitize_user($user_login);
$user_email = apply_filters('user_registration_email', $user_email);
if(!is_email($user_email)) $errors[] = 'неверный email';
elseif(email_exists($user_email)) $errors[] = 'этот email уже зарегистрирован, бла бла...';
if(empty($sanitized_user_login) || !validate_username($user_login)) $errors[] = 'неверное имя пользователя';
elseif(username_exists($sanitized_user_login)) $errors[] = 'имя пользователя уже существует';
if(empty($errors)):
$user_pass = wp_generate_password();
$user_id = wp_create_user($sanitized_user_login, $user_pass, $user_email);
if(!$user_id):
$errors[] = 'регистрация не удалась...';
else:
update_user_option($user_id, 'default_password_nag', true, true);
wp_new_user_notification($user_id, $user_pass);
endif;
endif;
if(!empty($errors)) define('REGISTRATION_ERROR', serialize($errors));
else define('REGISTERED_A_USER', $user_email);
endif;
}
код почти идентичен тому, что на странице регистрации пользователя.
затем добавьте свою форму в шаблон:
<?php
if(defined('REGISTRATION_ERROR'))
foreach(unserialize(REGISTRATION_ERROR) as $error)
echo "<div class=\"error\">{$error}</div>";
// ошибки здесь, если есть
elseif(defined('REGISTERED_A_USER'))
echo 'письмо было отправлено на '.REGISTERED_A_USER;
?>
<form method="post" action="<?php echo add_query_arg('do', 'register', home_url('/')); ?>">
<label>
Имя пользователя:
<input type="text" name="user" value=""/>
</label>
<label>
Email:
<input type="text" name="email" value="" />
</label>
<label>
Удалите этот текст:
<input type="text" name="spam" value="какая-то_защита_от_спама" />
</label>
<input type="submit" value="зарегистрироваться" />
</form>
вы можете создать виджет с этим, шорткод или просто обычный шаблон страницы...

Выглядит отлично, но, кажется, не сработало. Я нашел плагин, который отлично работает, так что спасибо за помощь.

Близко, но не совсем то, что мне нужно. Мне нужно что-то, что можно легко внедрить в мой существующий шаблон.

Вот сайт, который я недавно закончил проектировать, используя simplemodal для входа... http://www.purevapes.com/ Обрати внимание на ссылки регистрации и входа вверху. Пользователь никогда не покидает фронтенд блога. Ты можешь встроить их в свой шаблон с помощью простого HTML-кода, и они перенаправляют пользователя на главную страницу вместо админ-панели. Так что я не понимаю, как это нельзя "встроить" в любой шаблон.

Я имел в виду "встроенную" прямо в страницу, а не в виде модального окна.
Вот плагин, который я только что нашел для этого: http://wordpress.org/extend/plugins/simplr-registration-form/

Gravity Forms — это, на мой взгляд, лучший плагин контактных форм для WordPress. Их новая бета-версия включает аддон для регистрации пользователей. Я протестировал его, и он работает отлично. Однако за него придётся заплатить — лицензия для разработчиков стоит $199.
Страница с ценами: http://www.gravityforms.com/purchase-gravity-forms/
Статья в блоге о аддоне для регистрации пользователей: http://www.gravityhelp.com/
Я настоятельно рекомендую этот плагин сообществу WordPress.
Подробные характеристики:
Вот некоторые особенности аддона для регистрации пользователей:
- Регистрация пользователей — настройте форму для регистрации пользователей, сопоставляя поля формы с доступными полями регистрации в WordPress.
- Метаданные пользователя — легко заполняйте метаданные, такие как биография, ID мессенджеров, имя, фамилия, а также пользовательские метаданные по вашему усмотрению.
- Интеграция с BuddyPress — заполняйте данные профиля BuddyPress в процессе регистрации пользователя. Совместимость с BuddyPress v1.2.6.
- Интеграция с платежами — требуйте оплату перед регистрацией пользователя. Поддержка подписок PayPal, изменение роли пользователя или его удаление при отмене подписки.
- Поле пароля — аддон добавляет поле пароля в Gravity Forms с возможностью подтверждения и проверки сложности пароля.
- Автор записи — интегрируйте аддон регистрации пользователей и создание записей в одной форме, чтобы автор записи автоматически становился зарегистрированным пользователем.
- Создание сайта — автоматически создавайте сайты в сети WordPress (мультисайт) и назначайте новых пользователей администраторами этих сайтов.

Вы можете использовать плагин Theme My Login

Похоже, ваш плагин может отлично работать, но у меня не получается заставить работать форму регистрации. Форма входа отображается нормально, но когда я пытаюсь перейти к форме регистрации, меня просто перенаправляет на стандартную wordpress форму. Есть ли способ просто отобразить форму регистрации на странице?

Вот простой и удобный способ, который я использовал:
Скопируйте названия полей и другие элементы из текущей формы регистрации WordPress. Убедитесь, что ваша пользовательская форма содержит те же имена полей, включая скрытые, а затем просто укажите действие формы на правильный URL регистрации: http://www.yourblog.com/wp-login.php?action=register - После этого вы также можете изменить перенаправление после регистрации, если вас не устраивает стандартное поведение.
Также существует плагин под названием Insite Login, который позволяет встраивать формы регистрации, входа и другие на страницы вашего сайта: http://wordpress.org/extend/plugins/insitelogin/
Первый вариант должен выполнить то, что вам нужно.

Если вам необходимо добавить больше полей в форму регистрации, вы можете использовать плагин Profile Builder
Он позволяет настраивать ваш сайт, добавляя фронтенд-формы для входа, регистрации и редактирования профиля с помощью шорткодов.
