Как легко отобразить форму регистрации пользователей на фронтенде?

17 янв. 2011 г., 22:48:18
Просмотры: 33.3K
Голосов: 13

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

Есть идеи?

1
Комментарии

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

Mads Skjern Mads Skjern
22 окт. 2014 г. 15:01:07
Все ответы на вопрос 7
0

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

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

18 янв. 2011 г. 22:11:01
2

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

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>

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

18 янв. 2011 г. 05:02:01
Комментарии

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

Pippin Pippin
18 янв. 2011 г. 05:13:51

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

onetrickpony onetrickpony
18 янв. 2011 г. 05:21:42
5

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

17 янв. 2011 г. 23:41:24
Комментарии

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

Pippin Pippin
18 янв. 2011 г. 01:07:44

Да.. Я.. Как это может не подходить для твоего шаблона?

Lynne Lynne
18 янв. 2011 г. 01:19:54

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

Lynne Lynne
18 янв. 2011 г. 01:22:37

Я имел в виду "встроенную" прямо в страницу, а не в виде модального окна.

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

Pippin Pippin
18 янв. 2011 г. 05:02:37

А, понятно. Мне даже в голову не пришло, что модальное окно может быть проблемой, но теперь я вижу ситуации, где оно уместно, а где нет. Спасибо за ссылку на плагин, добавлю его в свой арсенал. Рад, что вы нашли ответ :)

Lynne Lynne
18 янв. 2011 г. 05:05:15
0

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 (мультисайт) и назначайте новых пользователей администраторами этих сайтов.
18 янв. 2011 г. 04:16:50
2

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

17 янв. 2011 г. 23:52:06
Комментарии

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

Pippin Pippin
18 янв. 2011 г. 01:14:09

Это не тот плагин, который я написал :P

Tareq Tareq
19 янв. 2011 г. 12:34:36
0

Вот простой и удобный способ, который я использовал:

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

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

Первый вариант должен выполнить то, что вам нужно.

18 янв. 2011 г. 04:52:32
0

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

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

13 апр. 2011 г. 14:24:40