Formularz rejestracji w interfejsie użytkownika

13

Szukam prostego sposobu na umieszczenie formularza rejestracyjnego użytkownika na froncie witryny WordPress. Użyłem już wp_login_form () do umieszczenia formularza logowania na interfejsie, ale teraz muszę zrobić to samo z formularzem rejestracji.

Jakieś pomysły?

Pippin
źródło
Przepraszamy, ale co masz na myśli przez „front-end”. Wydaje mi się, że rozumiem, co oznacza front-end i back-end, ale nie rozumiem, w jaki sposób można umieścić formularz w innym miejscu niż front-end. Masz na myśli pierwszą stronę?
Mads Skjern

Odpowiedzi:

7

Jeff Starr napisał świetny samouczek dotyczący rejestracji frontonu, logowania i odzyskiwania hasła,
przyjmując podobne podejście, jak sugeruje onetrickpony . Więc weź to jako kontynuację jego odpowiedzi i jako inny zasób, który może ci pomóc:
http://digwp.com/2010/12/login-register-password-code/

Teraz masz dwa przykłady, jak samemu to zakodować i zaufaj mi - zdecydowanie warto to zrobić (na swój własny) sposób. Nie jest to takie trudne i daje swobodę , elastyczność i możliwość ponownego użycia, których żadna wtyczka nie może zaoferować.

Michał Mau
źródło
4

jeśli chcesz sobie z tym poradzić, oto czego używam:

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;
}

kod jest prawie identyczny z kodem ze strony rejestracji użytkownika.

następnie dodaj formularz do szablonu:

<?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>

możesz utworzyć widget za pomocą tego, krótkiego kodu lub zwykłego szablonu strony ...

onetrickpony
źródło
Wygląda świetnie, choć nie działa. Znalazłem wtyczkę, która działa świetnie, więc dziękuję za pomoc.
Pippin
działa dla mnie, ale myślę, że musisz zmienić home_url()bieżący adres strony, ponieważ mój kod zakłada, że ​​formularz znajduje się na stronie głównej. Opublikowałem get_current_page_url()tutaj funkcję dotyczącą innego pytania, ale nie pamiętam, które z nich
onetrickpony
2

Gravity Forms to najlepsza wtyczka formularza kontaktowego dla WordPress, IMO. Tam najnowsza wersja, w wersji beta, ma dodatek do rejestracji użytkownika. Próbowałem i działa świetnie. Będzie cię to jednak kosztować ... to licencja programisty kosztuje 199 USD.

Strona z cenami http://www.gravityforms.com/purchase-gravity-forms/

Wpis na blogu mówiący o dodatku do rejestracji użytkownika http://www.gravityhelp.com/

Bardzo polecam tę wtyczkę społeczności WordPress.

Szczegółowe specyfikacje:

Oto niektóre funkcje dodatku do rejestracji użytkownika:

  • Rejestracja użytkownika - Skonfiguruj formularz, aby zarejestrować użytkownika, mapując pola formularza na dostępne pola rejestracji użytkownika w WordPress.
  • Meta użytkownika - łatwo wypełnij metadane użytkownika, takie jak biografia, identyfikator komunikatora, imię, nazwisko, a także niestandardowe meta użytkownika, które odpowiadają Twoim potrzebom.
  • Integracja BuddyPress - wypełnianie danych pola profilu BuddyPress w ramach procesu rejestracji użytkownika. Obecnie współpracuje z BuddyPress v1.2.6.
  • Integracja płatności - wymagaj płatności przed rejestracją użytkownika. Obejmuje obsługę subskrypcji PayPal oraz zmianę roli użytkownika lub usunięcie użytkownika, jeśli subskrypcja zostanie anulowana.
  • Pole hasła - Dodatek do rejestracji użytkownika dodaje pole Hasło do formularzy grawitacyjnych w celu użycia w formularzach. Pole Hasło zawiera opcję potwierdzenia, a także wbudowaną opcję sprawdzania siły hasła.
  • Autor postu - Zintegruj dodatek do rejestracji użytkownika i tworzenie postów w jednym formularzu, aby autorem utworzonego postu był użytkownik zarejestrowany przez dodatek.
  • Tworzenie witryny - automatycznie utwórz witrynę w sieci WordPress (wiele witryn) i przypisz nowo utworzonych użytkowników jako administratora witryny.
Carson
źródło
1

Wypróbuj wtyczkę logowania simplemodal. Umożliwia rejestrację i logowanie (musisz włączyć rejestrację użytkownika) i ma bardzo ładny wygląd.

Lynne
źródło
Blisko, ale nie do końca to, czego potrzebuję. Potrzebuję czegoś, co mogę wrzucić do mojego istniejącego szablonu.
Pippin
Tak .. ja .. Jak nie możesz umieścić tego w swoim szablonie?
Lynne
Oto strona, którą właśnie skończyłem projektować za pomocą prostego logowania. Purevapes.com zwróć uwagę na rejestr i linki logowania na górze. Użytkownik nigdy nie zostaje zabrany z interfejsu użytkownika bloga. Możesz włączyć je przy użyciu prostego kodu HTML w swoim szablonie, a przekierowują użytkownika na stronę główną zamiast do panelu administracyjnego. Nie jestem więc pewien, jak tego nie można „upuścić” w żadnym szablonie.
Lynne
Miałem na myśli „upuszczony” jak w dołączonej na rzeczywistej stronie, a nie jako okno modalne. Oto wtyczka, którą właśnie znalazłem, aby to zrobić: wordpress.org/extend/plugins/simplr-registration-form
Pippin
O, rozumiem. Nawet nie przyszło mi do głowy, że okno modalne stanowiłoby problem, ale teraz widzę, gdzie jest na to miejsce, a nie. Dzięki za link do wtyczki, wrzucając to do mojego arsenału. Cieszę się, że znalazłeś odpowiedź :)
Lynne,
0

Możesz użyć wtyczki Theme My Login

Tareq
źródło
Wygląda na to, że Twoja wtyczka może działać świetnie, z tym wyjątkiem, że nie mogę uzyskać formularza rejestracyjnego do działania. Formularz logowania wyświetla się dobrze, ale kiedy próbuję przejść do formularza rejestracji, po prostu zabiera mnie do domyślnego Wordpress. Czy istnieje sposób, aby wyświetlić formularz rejestru na stronie?
Pippin
To nie moja wtyczka, którą napisałem: P
Tareq
0

Oto ładny i łatwy sposób, w jaki to zrobiłem:

Skopiuj nazwy pól i wszelkie inne rzeczy z bieżącego formularza rejestracji Wordpress. Upewnij się, że niestandardowy formularz ma te same pola nazw, w tym ukryte, a następnie po prostu wskaż akcję formularza na odpowiedni adres rejestracyjny: http://www.yourblog.com/wp-login.php?action=register - wtedy możesz chcieć aby zmienić sposób przekierowywania formularza również po rejestracji, jeśli nie podoba ci się sposób jego obsługi.

Dostępna jest również wtyczka o nazwie Insite Login, która pozwala na wpisanie formularza rejestracyjnego, formularza logowania i innych na strony w witrynie: http://wordpress.org/extend/plugins/insitelogin/

Pierwsze rozwiązanie powinno jednak zrobić to, co chcesz.

Dwayne Charrington
źródło
0

Jeśli potrzebujesz więcej pól w formularzu rejestracyjnym, możesz użyć wtyczki Profile Builder

Umożliwia dostosowanie witryny przez dodanie formularzy frontonu do logowania, rejestracji i edycji profilu za pomocą skrótów.

Cristian Dumitru Antohe
źródło