Форма регистрации переднего конца

13

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

Есть идеи?

пепин
источник
Извините, но что вы подразумеваете под "front-end". Я думаю, что понимаю, что такое интерфейс и бэкэнд, но я не понимаю, как вы можете разместить форму где-нибудь еще, кроме интерфейса. Вы имеете в виду первую полосу?
Мэдс Скьерн

Ответы:

7

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

Теперь у вас есть два примера того, как написать это самостоятельно и довериться мне - определенно стоит сделать это (по-своему). Это не так сложно, и это дает вам свободу , гибкость и возможность повторного использования, которые не может предложить ни один плагин.

Михал Мау
источник
4

если вы хотите справиться с этим самостоятельно, вот что я использую:

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[] = 'provide a user and email';
    if(!empty($_POST['spam'])) $errors[] = 'gtfo spammer';

    $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[] = 'invalid e-mail';
    elseif(email_exists($user_email)) $errors[] = 'this email is already registered, bla bla...';

    if(empty($sanitized_user_login) || !validate_username($user_login)) $errors[] = 'invalid user name';
    elseif(username_exists($sanitized_user_login)) $errors[] = 'user name already exists';

    if(empty($errors)):
      $user_pass = wp_generate_password();
      $user_id = wp_create_user($sanitized_user_login, $user_pass, $user_email);

      if(!$user_id):
        $errors[] = 'registration failed...';
      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>";
  // errors here, if any

  elseif(defined('REGISTERED_A_USER'))
    echo 'a email has been sent to '.REGISTERED_A_USER;
?>
<form method="post" action="<?php echo add_query_arg('do', 'register', home_url('/')); ?>">
  <label>
    User:
    <input type="text" name="user" value=""/>
  </label>

  <label>
    Email:
   <input type="text" name="email" value="" />
  </label>

  <label>
    Delete this text:
   <input type="text" name="spam" value="some_crappy_spam_protection" />
  </label>

  <input type="submit" value="register" />
</form>

Вы можете создать виджет с этим, шорткодом или просто обычным шаблоном страницы ...

onetrickpony
источник
Выглядит отлично, хотя, похоже, не работает. Я нашел плагин, который прекрасно работает, так что спасибо за помощь.
Пиппин
работает для меня, но я думаю, что вам нужно изменить home_url()с URL текущей страницы, потому что мой код предполагает, что форма находится на главной странице. Я разместил здесь get_current_page_url()функцию по другому вопросу, не помню, какой именно
onetrickpony
2

Gravity Forms - лучший плагин контактной формы для WordPress, IMO. Там в новейшей версии, в бета-версии, есть дополнение для регистрации пользователей. Я попробовал это, и это прекрасно работает. Это будет стоить вам, хотя ... это $ 199 за лицензию разработчика.

Страница с ценами http://www.gravityforms.com/purchase-gravity-forms/

В блоге рассказывается о дополнении регистрации пользователя http://www.gravityhelp.com/

Я очень рекомендую этот плагин сообществу WordPress.

Подробные характеристики:

Вот некоторые из функций дополнения регистрации пользователя:

  • Регистрация пользователя - Настройте форму для регистрации пользователя, сопоставив поля формы с доступными полями регистрации пользователя в WordPress.
  • Пользовательская мета - легко заполняйте пользовательские метаданные, такие как био, идентификатор мгновенного обмена сообщениями, имя, фамилия, а также пользовательские метаданные в соответствии с вашими потребностями.
  • Интеграция BuddyPress - Заполните данные поля профиля BuddyPress как часть процесса регистрации пользователя. В настоящее время работает с BuddyPress v1.2.6.
  • Интеграция с платежами. Требуется оплата до регистрации пользователя. Включает поддержку подписок PayPal, а также изменение роли пользователя или удаление пользователя в случае отмены подписки.
  • Поле пароля - надстройка регистрации пользователя добавляет поле пароля в Gravity Forms для использования в ваших формах. Поле «Пароль» содержит параметр подтверждения, а также встроенную функцию проверки надежности пароля.
  • Автор сообщения - Объедините надстройку регистрации пользователя и создание сообщения в одной форме, чтобы автором создаваемого сообщения был пользователь, зарегистрированный в надстройке.
  • Создание сайта - автоматическое создание сайта в сети WordPress (многосайтовая), установка и назначение вновь созданных пользователей администратором сайта.
Carson
источник
1

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

Lynne
источник
Закрыть, но не совсем то, что мне нужно. Мне нужно что-то, что я могу добавить в свой существующий шаблон.
Пиппин
Да .. я .. Как вы не можете положить это в свой шаблон?
Линн
Вот сайт, который я только что закончил проектировать, используя простой модальный логин. Purevapes.com обратите внимание на регистр и ссылки для входа вверху. Пользователь никогда не забирается из внешнего интерфейса блога. Вы можете включить их, используя простой HTML-код в свой шаблон, и они перенаправляют пользователя на первую страницу вместо панели администратора. Так что я не уверен, как это не может быть «сброшено» в любой шаблон.
Линн
Я имел в виду «упал» как включенный в фактическую страницу, а не как модальное окно. Вот плагин, который я только что нашел, чтобы сделать это: wordpress.org/extend/plugins/simplr-registration-form
Pippin
Ах я вижу. Мне даже не приходило в голову, что модальное окно будет представлять проблему, но теперь я вижу, где есть место для этого, а нет. Спасибо за ссылку на плагин, добавив ее в мой арсенал. Рад, что вы нашли свой ответ :)
Линн
0

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

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

Вот хороший и простой способ сделать это:

Скопируйте имена полей и любой другой материал из текущей регистрационной формы Wordpress. Убедитесь, что ваша пользовательская форма имеет те же поля с именами, включая скрытые, а затем просто укажите действие формы на правильный URL-адрес регистрации: http://www.yourblog.com/wp-login.php?action=register - тогда вы можете захотеть изменить способ перенаправления формы после регистрации, если вам не нравится, как она обрабатывается.

Существует также этот плагин, который называется Insite Login, который позволяет вам перетащить регистрационную форму, форму входа и другие страницы на ваш сайт: http://wordpress.org/extend/plugins/insitelogin/

Первое решение должно делать то, что вы хотите.

Дуэйн Чаррингтон
источник
0

Если вам нужно больше полей в вашей регистрационной форме, вы можете использовать плагин Profile Builder

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

Кристиан Думитру Антохе
источник