Erstellen einer geschlossenen WordPress-Community mit Verweiscodes

Es gibt viele WP-Plugins für Verweise und verschiedene für die Erstellung von Registrierungscodes für eingeschränkte Registrierungsseiten, aber ich suche nach einem Hybrid.

Also, meine WP-powered Community ist komplett geschlossen und du kannst nur reinkommen, wenn du von anderen Mitgliedern eingeladen wirst. Genau wie Google Mail am Anfang.

Am besten wäre es, wenn ein registrierter Benutzer einfach eine E-Mail ausfüllen könnte und diese Adresse einen Registrierungslink mit einem eindeutigen einmaligen Registrierungscode erhalten würde. Sobald diese Empfehlung / neuer Benutzer sich registriert hätte, würde ich gerne anzeigen, von welchem ​​Benutzer diese Person eingeladen wurde.

Leider habe ich dafür keine passenden Plugins gefunden, obwohl es sich um eine ganz normale Situation handelt.

Gibt es jemanden, der mir einen Rat geben kann? Hilfe wird geschätzt.

Solutions Collecting From Web of "Erstellen einer geschlossenen WordPress-Community mit Verweiscodes"

Also, zuerst, wir brauchen eine Art von Formular einreichen. Hier ist ein einfacher, es kann natürlich sein, was immer du willst. Dies ist nur für dieses Beispiel. Versendet die Person beim Senden per E-Mail und richtet einen Kennwortschlüssel für sie in der Tabelle wp_options ein.

< ?php add_action( 'init', 'wpse15535_add_shortcode' ); function wpse15535_add_shortcode() { add_shortcode( 'invite-form', 'wpse15535_invite_form' ); } function wpse15535_invite_form() { ?> 
< ?php // Do some stuff if our action is set. if( isset( $_POST['wpse15535_action'] ) && 'send_invite' == $_POST['wpse15535_action'] ) { // Get the email $email = isset( $_POST['wpse15535_email'] ) && is_email( $_POST['wpse15535_email'] ) ? $_POST['wpse15535_email'] : false; if( ! $email ) return; // bad email? bail. // generate a random 30 character string. $key = wp_generate_password( 30 ); // store our keys in the options table $opts = get_option( 'wpse15535_keys' ); $opts = (array) $opts; $opts[$email] = $key; update_option( 'wpse15535_keys', $opts ); // Send an email! $message = "You're invited to join a sweet community! Click here: " . home_url( 'wp-login.php?action=register&invite_key=' . $key ); wp_mail( $email, "You're invited!", $message ); } }

Dann geht es weiter zum Anmeldeformular. settigns > general Sie sicher, dass "Jeder kann sich registrieren" in den settigns > general Optionen settigns > general .

Die E-Mail, die an die Person gesendet wird, enthält eine URL mit dem Einladungsschlüssel als URL-Parameter invite_key . Als erstes werden wir uns in das Registrierungsformular einklinken und eine verborgene Eingabe mit dem Schlüssel ausgeben, falls dieser vorhanden ist.

 < ?php add_action( 'register_form', 'wpse15535_add_key' ); function wpse15535_add_key() { if( isset( $_GET['invite_key'] ) ) { echo ''; } } 

Als Nächstes werden wir uns in den filter registration_errors einklinken. Wir müssen sehen, ob es bereits Fehler gibt, und wenn es einen gibt, müssen wir abtreten. Dann sehen wir, ob wir überhaupt einen Schlüssel haben. Wenn nicht, füge einen Fehler und eine Nachricht hinzu. Sie erhalten die Option, die E-Mail => Schlüsselpaare enthält und sehen, ob die eingegebene E-Mail mit dem Schlüssel übereinstimmt, den wir dafür haben. Wenn nicht, add und Fehler und zurück.

Wenn nichts schief geht, sollte der Benutzer kein Problem registrieren können.

 < ?php add_filter( 'registration_errors', 'wpse15535_register_post', 10, 3 ); function wpse15535_register_post( $errors, $login, $email ) { // bail if something has gone wrong already as they won't be able to register. if( $errors->get_error_codes() ) return $errors; // If our key isn't set an error and bail if( ! isset( $_REQUEST['invite_key'] ) ) { $errors->add( 'no_key', __( 'You need an invite code to register for this site' ) ); return $errors; } $opts = get_option( 'wpse15535_keys' ); // see if this email has a key and if it matches what was submitted. if( ! isset( $opts[$email] ) || $_REQUEST['invite_key'] != $opts[$email] ) { $errors->add( 'invalid_key', __( 'Invalid Registration Key' ) ); return $errors; } // everything okay? Just return the errors and let it go through. return $errors; } 

Als Plugin: https://gist.github.com/1181933