Front-End-Registrierungsformular

13

Ich suche nach einer einfachen Möglichkeit, das Benutzerregistrierungsformular im Front-End einer WordPress-Site zu platzieren. Ich habe bereits wp_login_form () verwendet, um das Anmeldeformular im Front-End zu platzieren, aber jetzt muss ich dasselbe mit dem Anmeldeformular tun.

Irgendwelche Ideen?

Pippin
quelle
Sorry, aber was meinst du mit "Frontend"? Ich denke, ich verstehe, was Front-End und Back-End bedeuten, aber ich verstehe nicht, wie Sie ein Formular an einer anderen Stelle als am Front-End platzieren können. Meinst du Titelseite?
Mads Skjern

Antworten:

7

Jeff Starr hat ein großartiges Tutorial über Front-End-Registrierung, Login und Passwortwiederherstellung geschrieben
, das den von onetrickpony vorgeschlagenen Ansatz verfolgt . Nehmen Sie dies als Folgemaßnahme zu seiner Antwort und als eine weitere Ressource, die Ihnen bei der Erledigung helfen könnte:
http://digwp.com/2010/12/login-register-password-code/

Jetzt haben Sie zwei Beispiele, wie Sie dies selbst codieren und mir vertrauen können - es lohnt sich definitiv, es auf diese (Ihre eigene) Weise zu tun. Es ist nicht so schwer und gibt Ihnen Freiheit , Flexibilität und Wiederverwendbarkeit , die kein Plugin bieten kann.

Michal Mau
quelle
4

Für den Fall, dass Sie dies selbst erledigen möchten, verwende ich Folgendes:

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

Der Code ist fast identisch mit dem auf der Benutzeranmeldeseite.

Dann fügen Sie Ihr Formular in Ihre Vorlage ein:

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

Sie können entweder ein Widget mit diesem, einem Shortcode oder nur der üblichen Seitenvorlage erstellen ...

onetrickpony
quelle
Sieht gut aus, schien aber nicht zu funktionieren. Ich habe ein Plugin gefunden, das jedoch hervorragend funktioniert. Vielen Dank für die Hilfe.
Pippin
Funktioniert für mich, aber ich denke, Sie müssen home_url()die URL der aktuellen Seite ändern, da mein Code davon ausgeht, dass sich das Formular auf der Startseite befindet. Ich habe get_current_page_url()hier eine Funktion zu einer anderen Frage gepostet , weiß aber nicht mehr, welche
onetrickpony 18.01.11
2

Gravity Forms ist das beste Kontaktformular-Plugin für WordPress, IMO. Die neueste Beta-Version enthält ein Add-On für die Benutzerregistrierung. Ich habe es versucht und es funktioniert großartig. Es kostet Sie aber ... es ist 199 $ für eine Entwicklerlizenz.

Preisseite http://www.gravityforms.com/purchase-gravity-forms/

Blog-Beitrag über das Benutzerregistrierungs-Add-On http://www.gravityhelp.com/

Ich kann dieses Plugin der WordPress-Community nur empfehlen.

Detaillierte Spezifikationen:

Hier sind einige der Funktionen des Benutzerregistrierungs-Add-Ons:

  • Benutzerregistrierung - Richten Sie ein Formular ein, um einen Benutzer zu registrieren, indem Sie Ihre Formularfelder verfügbaren Benutzerregistrierungsfeldern in WordPress zuordnen.
  • Benutzermetadaten - Füllen Sie Benutzermetadaten wie Bio, Instant Messaging-ID, Vorname, Nachname sowie benutzerdefinierte Benutzermetadaten ganz einfach nach Ihren Wünschen aus.
  • BuddyPress-Integration - Füllen Sie BuddyPress-Profilfelddaten als Teil des Benutzerregistrierungsprozesses aus. Funktioniert derzeit mit BuddyPress v1.2.6.
  • Zahlungsintegration - Fordern Sie eine Zahlung an, bevor die Benutzerregistrierung erfolgt. Umfasst die Unterstützung für PayPal-Abonnements und das Ändern der Benutzerrolle oder das Löschen des Benutzers, wenn das Abonnement gekündigt wird.
  • Kennwortfeld - Das Benutzerregistrierungs-Add-On fügt Gravity Forms ein Kennwortfeld zur Verwendung in Ihren Formularen hinzu. Das Feld Kennwort enthält eine Bestätigungsoption sowie eine integrierte Option zur Überprüfung der Kennwortstärke.
  • Beitragsautor - Integrieren Sie das Benutzerregistrierungs-Add-On und die Beitragserstellung in ein einziges Formular, sodass der Autor des erstellten Beitrags der vom Add-On registrierte Benutzer ist.
  • Site-Erstellung - Erstellen Sie automatisch eine Site in einem WordPress-Netzwerk (mit mehreren Sites) und weisen Sie die neu erstellten Benutzer als Administrator für die Site zu.
Carson
quelle
1

Probieren Sie das simplemodal Login Plugin aus. Es ermöglicht die Registrierung und Anmeldung (Sie müssen die Benutzerregistrierung aktivieren) und es sieht sehr gut aus.

Lynne
quelle
Nah dran, aber nicht ganz das, was ich brauche. Ich benötige etwas, das ich in meine vorhandene Vorlage einfügen kann.
Pippin
Ja, ich, wie kannst du das nicht in deine Vorlage einfügen?
Lynne
Hier ist eine Seite, die ich gerade mit simplemodal log in entworfen habe. Purevapes.com beachte die Links zum Registrieren und Einloggen oben. Der Benutzer wird nie vom Front-End des Blogs entfernt. Sie können sie mit einfachem HTML-Code in Ihre Vorlage einbinden und sie leiten den Benutzer anstelle des Admin-Panels auf die Startseite weiter. Daher bin ich mir nicht sicher, wie dies nicht in eine Vorlage 'fallen gelassen' werden kann.
Lynne
Ich meinte "abgelegt" als in der eigentlichen Seite enthalten, nicht als modales Fenster. Hier ist das Plugin, das ich gerade gefunden habe: wordpress.org/extend/plugins/simplr-registration-form
Pippin
Ah ich sehe. Mir fiel nicht einmal ein, dass das modale Fenster ein Problem darstellen würde, aber ich kann jetzt sehen, wo es einen Platz dafür gibt und nicht. Danke für den Plugin-Link, den ich in mein Arsenal geworfen habe. Ich bin froh, dass du deine Antwort gefunden hast :)
Lynne
0

Sie können das Theme My Login Plugin verwenden

Tareq
quelle
Es sieht so aus, als ob Ihr Plugin großartig funktionieren könnte, außer dass ich das Registrierungsformular nicht zum Laufen bringen kann. Das Anmeldeformular wird gut angezeigt, aber wenn ich versuche, das Anmeldeformular aufzurufen, gehe ich einfach zum Standard-WordPress-Formular. Gibt es eine Möglichkeit, nur das Registrierungsformular auf der Seite anzuzeigen?
Pippin
Das ist nicht mein Plugin, das ich geschrieben habe: P
Tareq
0

Hier ist eine schöne und einfache Möglichkeit, wie ich das gemacht habe:

Kopieren Sie die Feldnamen und andere Informationen aus dem aktuellen Wordpress-Registrierungsformular. Stellen Sie sicher, dass Ihr benutzerdefiniertes Formular die gleichen Namensfelder enthält, einschließlich der ausgeblendeten, und verweisen Sie die Formularaktion lediglich auf die richtige Registrierungs-URL: http://www.yourblog.com/wp-login.php?action=register - Sie möchten dann möglicherweise um zu ändern, wie das Formular nach der Registrierung weitergeleitet wird, wenn Sie nicht möchten, wie es behandelt wird.

Es gibt auch dieses Plugin namens Insite Login, mit dem Sie das Registrierungsformular, das Anmeldeformular und andere auf Seiten Ihrer Website einfügen können : http://wordpress.org/extend/plugins/insitelogin/

Die erste Lösung sollte jedoch das tun, was Sie möchten.

Dwayne Charrington
quelle
0

Falls Sie mehr Felder in Ihrem Registrierungsformular benötigen, können Sie das Profile Builder-Plugin verwenden

Sie können Ihre Website anpassen, indem Sie Front-End-Formulare für die Anmeldung, Registrierung und Bearbeitung von Profilen mithilfe von Shortcodes hinzufügen.

Cristian Dumitru Antohe
quelle