WordPress Benutzeranmeldung im Frontend
Neue Benutzer können sich bei WordPress bequem anmelden, wenn bei den Einstellungen die entsprechende Checkbox angeklickt wurde. Allerdings können sich die Benutzer nur im Backend anmelden, und das ist doch alles andere als elegant. Außerdem kann der Benutzer nur seinen Namen und eine E-Mailadresse angeben. Weitere Daten werden nicht abgefragt und das Passwort automatisch generiert. Suboptimal.
Es gibt das Plugin Register Plus welches auf vielfältige Art erlaubt das Registrierungsformular zu erweitern (auch mit eigenen Feldern). Aber trotzdem befindet sich das Teil noch im Backend. Aber das muss nicht so bleiben.Als erstes braucht das verwendete Theme eine neue Seitenvorlage. Dazu dupliziert man die Datei page.php und fügt als erstes den folgenden PHP Kommentar ein:
<?php
/*
Template Name: Frontend Registrierung
*/
?>
Anschließend kann man eine neue Seite anlegen und in der rechten Spalte die Seitenvorlage Frontend Registrierung (bzw. was man eingetragen hat) auswählen.
Jetzt muss nur noch die Datei die Funktionalität kriegen. Dazu öffnet man in seinem bevorzugten Editor die duplizierte Datei und fügt, wo auch immer das Formular erscheinen soll, den folgenden Inhalt ein.
<form name="registerform" id="registerform" action="<?=site_url('wp-login.php?action=register', 'login_post')?>" method="post">
<p>
[tab]<label><?php _e('Username') ?><br />
[tab]<input type="text" name="user_login" id="user_login" class="input" value="<?php echo attribute_escape(stripslashes($user_login)); ?>" size="20" tabindex="10" /></label>
</p>
<p>
[tab]<label><?php _e('E-mail') ?><br />
[tab]<input type="text" name="user_email" id="user_email" class="input" value="<?php echo attribute_escape(stripslashes($user_email)); ?>" size="25" tabindex="20" /></label>
</p>
<?php $register_plus->RegForm(); ?>
<input type="submit" value="Registrieren!">
</form>
Was ist passiert? Es wird ein ganz normales HTML Formular erstellt mit der gleichen Zielseite wie das Backendregistrierungsformular. Mit site_url() wird das Formular unabhängig von der verwendeten Baseurl gemacht.
Die beiden Felder Username und E-mail müssen per Hand angelegt werden, der Rest wird vom Plugin register plus übernommen. Im Plugin wird die Variable $register_plus mit der Klasse initalisiert und steht deshalb im Template zur Verfügung. Die Funktion RegForm() gibt das Formular je nach den getroffenen Einstellungen im Backend zurück.
Noch ein Abschicken-Knopf drunter und fertig! Es gibt nur eine unschöne Sache: die Antwort vom Script wird auf der normalen Registrierungsseite ausgegeben. Das ist noch nicht ganz perfekt, aber vielleicht hat jemand einen Tipp(?) oder in der nächsten Zeit kommt Teil 2 von diesem Tutorial.
Frohes bloggen!
Hallo,
“[...] Dazu dupliziert man die Datei page.php [...]”
-> Ich verwende ein Theme, das keine page.php-Datei besitzt (weil sie nicht gebraucht wird). Kann ich statt dessen auf die index.php verwenden oder kommt es dann zu Komplikationen?
Und: Register Plus habe ich auch als Plugin in Verwendung. Zudem verwende ich das Simple:Press Forum Plugin. Die Registrierungsseite selbst sieht auch… sagen wir bescheiden aus. Diese wird mit der Anleitung aber wahrscheinlich nicht geändert, oder? Da werde ich mich an die Entwickler wenden müssen…
Ansonsten gute Anleitung. Grüße
Sloddy
An sich ne gute Sache, ich frag mich nur, ob das auch dauerhaft brauchbar bleibt.
Mit dem Plugin “Theme my Login” [http://www.jfarthing.com/wordpress-plugins/theme-my-login-plugin] lässt sich “Register Plus” ganz bequem in das Frontend einbauen. Damit gibts auch keinen Stress bei Fehlern oder mit der Antwortseite bei Erfolg. Die Registrierung läuft damit vollständig im Frontend ab.
Hi Carsten, danke für den Tipp! Ich denke genau das braucht man um sich den Stress von oben zu sparen