Registrierungsseite umgestalten - Anleitung und Fragen

  • Ich habe meine Registrierungsseite umgestaltet: Vorher sah sie mit WordPress 4.0, Buddy 2.1 sowie Reddle-Theme 1.3.1 wie folgt aus:

    http://1a-spielwiese.de/wp-content/upl…e_Reg-Seite.jpg

    Jetzt sieht sie so aus:

    http://www.1a-spielwiese.de/wp-login.php?action=register.

    Falls es Nachahmungs-Interessierte gibt, möchte ich kurz erklären, was ich gemacht habe. - Außerdem habe ich auch noch ein paar ungeklärte Fragen.


    1. Die Design-Änderungen nahm ich in erster Linie per folgender Einfügung in mein Child-Theme vor:


    2. Merkwürdig daran scheint mir allerdings zu sein, dass die 100%-width für #user-role-section (+ float: none) und für #wp_rar_user_role erst wirksam wurde, nachdem ich die entsprechenden Abschnitte in der original wp-role-at-registration.php gelöscht habe.

    3. Außerdem habe ich - gemäß der dortigen Anleitung - in meinem Child-Theme-Ordner einen buddypress-Ordner und innerhalb des BuddyPress-Ordners einen members-Ordner und dort eine veränderte Kopie der Original-BuddyPress register.php eingefügt:

    http://1a-spielwiese.de/wp-content/upl…egister-php.jpg (Auszug; ergänzte oder anderweitig geänderte Stellen sind gelb markiert).


    4. Außerdem habe ich festgestellt: Wenn in der dortigen Passage:

    PHP
    <?php if ( bp_is_active( 'xprofile' ) ) : if ( bp_has_profile( array( 'profile_group_id' => 1, 'fetch_field_data' => false ) ) ) : while ( bp_profile_groups() ) : bp_the_profile_group(); ?>
    Code
    'profile_group_id' => 1,

    gelöscht wird, werden auf der Registrierungsseite nicht mehr nur die Profilfelder der sog. "Base"-Gruppe, sondern auch alle "erweiterten" Profilfelder abgefragt (was ich gut finde).


    Folgendes hat aber leider noch nicht geklappt:

    • Ich würde gerne erreichen, dass – wenn ich jene Löschung vornehme – die Profilfelder, die den Benutzer/innen mit der Benutzer/innen/rolle „Team“ zugeordnet sind, bei der Registrierung nur denjenigen angezeigt werden, die bei der Registrierung die Benutzer/in/rolle „Team“ wählen – und entsprechend umgekehrt in Bezug auf „Fan".


    • Außerdem möchte ich nicht nur alle Profilfelder auf der Registrierungsseite angezeigt bekommen, sondern – der Übersichtlichkeit halber – auch die Namen der Profilfeldgruppen, zu denen die Profilfelder zusammengefasst sind. –


    • Schließlich möchte ich den dritten Kasten ("Mitglieder-Kategorie") gerne als ersten oder zumindest zwischen den beiden anderen Kästen platzieren.

    Habt Ihr Ideen, wie sich das machen lässt (sowie zu dem weiter oben erwähnten Problem mit der 100%-width)?

    Einmal editiert, zuletzt von 1a-Spielwiese (2. Oktober 2014 um 10:56)

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Mir ist es inzwischen gelungen, die am Ende genannten Probleme überwiegend zu lösen:

    1. Platzierung des Kastens "Mitglieder-Kategorie" (bzw. inzwischen vielmehr: "Benutzer/in/rolle")

    Dessen Position wird von der Datei

    Code
    plugins/wp-roles-at-registration/wp-roles-at-registration.php

    bestimmt.
    Die dafür ausschlaggebende Zeile lautet:

    Code
    add_action('bp_after_signup_profile_fields', array($wp_rar_plugin, 'bp_choose_roles_registration_form'));

    Um dem Kasten eine andere Position zu geben, ersetzte ich

    Code
    bp_after_signup_profile_fields

    durch

    Code
    rar_at_beginning

    (es kann auch beliebiger anderer Text genommen werden - nur muss der nächste Schritt entsprechend sein).

    In die register.php (in dem entsprechenden Unterordner meines Child-Theme-Ordners) fügte ich dann zwischen die Zeilen

    PHP
    <?php if ( 'request-details' == bp_get_current_signup_step() ) : ?>
    
    
    <?php do_action( 'template_notices' ); ?>

    folgende Zeile ein:

    PHP
    <?php do_action( 'rar_at_beginning' ); ?>

    Und damit der Abstand zwischen dem ersten ("Benutzer/in/rolle") und dem zweiten ("Details zu Deinem neuen Benutzer/in/konto") Kasten stimmt, muss noch ein

    Code
    <br>

    folgen.


    2. Überschrift und Vorsprann-Text für diesen Kasten

    Um dem ersten Kasten die gewünschte Überschrift und den entsprechenden Vorspann-Text zu geben, nahm ich außerdem folgende Einfügung in die

    Code
    plugins/wp-roles-at-registration/wp-roles-at-registration.php

    vor:

    PHP
    <div class="register-section" id="user-role-section">
    
    
    <h4-a><?php _e( 'Benutzer/in/rolle', 'buddypress' ); ?></h4-a>
    
    
    <p><small><em>Entscheide Dich bitte als allererstes f&uuml;r eine der Benutzer/in/rollen "Team" oder "Fan" (bitte w&auml;hle nicht die Rolle "Subscriber"; diese Angabe soll noch gel&ouml;scht werden). In Abh&auml;ngigkeit von Deiner Antwort wirst Du nach Abschluss der Registrierung und wenn Du Dich das erste Mal bei 1a-Spielwiese einloggst und Dir Dein Profil ansiehst, die M&ouml;glichkeit haben, einige erg&auml;nzende rollenspezifische Profilangaben zu machen.</em></small></p>
    
    
    <label for="wp_rar_user_role"><?php echo $this->wp_rar_role_label; ?></label>

    Die erste und letzte Zeile in dem angeführten Zitat sind Original-Code aus der Datei; dazwischen machte ich meine Einfügung.


    3. Weitere Profilfeld-Gruppen einfügen

    Um nicht nur die "Base"-Gruppe, sondern auch weitere Profilfeld-Gruppen in die Registrierungsseite einzufügen, muss - für jede weitere Gruppe - eine ziemlich lange Passage der Original-BuddyPress

    Code
    register.php

    vervielältigt und dann leicht modifiziert werden.

    a) Diese lange Passage beginnt mit folgenden Zeilen:

    PHP
    <?php /***** Extra Profile Details ******/ ?>
    <?php if ( bp_is_active( 'xprofile' ) ) : ?>
    <?php do_action( 'bp_before_signup_profile_fields' ); ?>
                    <div class="register-section" id="profile-details-section">
    <h4><?php _e( 'Profile Details', 'buddypress' ); ?>
    </h4>                      <?php /* Use the profile field loop to render input fields for the 'base' profile field group */ ?>
    <?php if ( bp_is_active( 'xprofile' ) ) : if ( bp_has_profile( array( 'profile_group_id' => 1, 'fetch_field_data' => false ) ) ) : while ( bp_profile_groups() ) : bp_the_profile_group(); ?>

    Und sie endet mit diesen Zeilen:

    PHP
    <input type="hidden" name="signup_profile_field_ids" id="signup_profile_field_ids" value="<?php bp_the_profile_field_ids(); ?>" />
    <?php endwhile; endif; endif; ?>
    <?php do_action( 'bp_signup_profile_fields' ); ?>
    </div><!-- #profile-details-section -->
    <?php endif; ?>

    Dazwischen sind viele Zeilen, die ebenfalls kopiert werden müssen.

    b) Diese ganze, lange Passage muss dann hinter der letzten Zeile der Originalpassage eingefügt werden; und die einzige Änderung der eingefügten Passage, die anschließend obligatorisch ist, ist folgende:

    Code
    'profile_group_id' => 1,

    muss in

    Code
    'profile_group_id' => 2,

    geändert werden, um nun die Profilfelder der zweiten Profilfeld-Gruppe einzufügen.

    Genauso muss für die weiteren gewünschte Profilfeld-Gruppen vorgegangenen werden: Die ganze, lange Passage ein weiteres Mal einfügen und die fragliche Ziffer ändern.

    c) Ich habe außerdem - fakultativ - noch die Original

    Code
    <h4>

    -Überschrift geändert und danach meinen Vorspann-Text eingefügt:

    PHP
    <h4-a><?php _e( 'Profile Details - Teil II: Kontaktdaten', 'buddypress' ); ?></h4-a>
    
    
    <p><small><em>Beachte bitte, dass Du in zu den Profilfeldern in diesem Abschnitt selbst entscheiden kannst, wem Deine Angaben, die machst, angezeigt werden sollen.</small></em></p>

    Dies ist allerdings nicht für das technische Funktionieren der beschriebenen Lösung erforderlich.

    4. Registrierungsseite 'input-senstiv' machen

    Ich habe jetzt erst einmal nur meine Profilfeld-Gruppen 2 und 3 hinzugefügt, die sich an alle meine user richten. Meine Profilfeld-Gruppen 4 und 5 habe ich noch nicht gefügt.

    Gruppe 4 enthält eine Frage an meine user mit der Benutzer/in/rolle "Team", und Gruppe 5 enthält zwei Fragen an meine user mit der Benutzer/in/rolle "Fan".

    Ich habe nämlich weiterhin keine Möglichkeit dafür gefunden, das Anzeigen dieser beiden Profilfeld-Gruppen - je nachdem - davon abhängig zu machen, ob in dem ersten Kasten auf der Registrierungsseite die eine oder aber die andere Benutzer/in/rolle gewählt wird.

    Falls dafür welche Ideen haben - bitte berichten: :)

    5. 100%-width für #user-role-section (+ float: none) und für #wp_rar_user_role

    Für das Problemchen hinsichtlich der 100%-width (siehe Eingangs-Beitrag, Abschnitt 2.) habe ich auch noch keine Erklärung / Lösung.

  • Hallo 1a Spielwiese,

    danke für Deine Mühe und die ausführliche Beschreibung. Hilft mir in einigen Punkten weiter (ich brauche nicht ganz so viel :-) ).
    MERCI!!!

  • WOW :D

    Bin des programmierens noch nicht so mächtig, hatte aber auch einige Änderungswünsche an die Registrierungsseite und Dein Beitrag hilft mir unglaublich weiter!!
    Vielen Dank für die Weitergabe!! :-)

    Den ersten Code fügst Du in die Datei /"theme"/regsitration/register.php ein? An eine bestimmte Stelle?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!