Ultimate Member: Custom Fields auf der Account-Seite

Ultimate Member ist ein solides, etabliertes Plugin, um mit WordPress ein rechtebasiertes Mitgliederverzeichnis mit einfacher Social Media Funktionalität aufzubauen. Die Registrierungs- und Profilformulare lassen sich dabei, im Gegensatz zum WordPress-Standard, mit allerhand individuellen Feldern (engl. „Custom Fields“) ausstatten. Jedoch gibt es eine Herausforderung: Diese individuellen Felder auch auf der Account-Seite darzustellen. Ich zeige Ihnen, wie Sie das mit ein paar Zeilen PHP-Code hinbekommen können.

Die Account-Seite enthält üblicherweise den Shortcode [ultimatemember_account], um den eigenen User-Account inklusive Bearbeitungsmöglichkeiten darzustellen. Die Profilfelder jedoch beschränken sich auf den Benutzernamen, die E-Mail-Adresse, das Passwort sowie optional den Vor- sowie Nachnamen. Wenn Sie im Registrierungsformular jedoch weitere Felder vorgesehen haben, in meinem Beispiel Telefonnummer (als Textfeld), Kontaktaufname (als Checkbox) sowie Newsletter (als Radio), dann sind diese im Code mittels add_action() zu injizieren.

Öffnen Sie dazu die functions.php Ihres (Child-) Themes oder nutzen Sie Ihr eigenes Plugin für Custom-Code und fügen Sie folgende Zeilen hinzu:

/**
 * UM: Add custom fields to account site
 */

/* show the fields */
add_action('um_after_account_general', 'showUMExtraFields', 100);
function showUMExtraFields() {
    $id = um_user('ID');
    $output = '';
    // Array with your custom field names:
    $names = array('phone_number', 'possible_contact', 'newsletter');

    $fields = array(); 
    foreach( $names as $name ) {
        $fields[ $name ] = UM()->builtin()->get_specific_field( $name );
    }
    
    $fields = apply_filters('um_account_secure_fields', $fields, $id);
    foreach( $fields as $key => $data ) {
        $output .= UM()->fields()->edit_field( $key, $data );
    }

    echo $output;
}

/* save the fields */
add_action('um_account_pre_update_profile', 'getUMFormData', 100);
function getUMFormData(){
    $id = um_user('ID');
    // Array with your custom field names:
    $names = array('phone_number', 'possible_contact', 'newsletter');

    foreach( $names as $name ){
        update_user_meta( $id, $name, $_POST[$name] );
    }
}

Die erste Action ruft eine Funktion auf, um die Profilfelder zunächst darzustellen. Tauschen Sie hierzu die Namen Ihrer gewünschten Felder entsprechend aus (hier: 'phone_number', 'possible_contact', 'newsletter'). In der zweiten Action wird eine Funktion aufgerufen, um die Felder nach der Bearbeitung speichern zu können – auch hier müssen Sie diese Felder im entsprechenden Array benennen (was natürlich identisch sein sollte mit dem Array aus der ersten Funktion).

Wenn alles korrekt ist, sehen Sie fortan Ihre definierten Custom Fields auch auf der Ultimate Member Account-Seite und können diese dort wie die Standardfelder bearbeiten und speichern.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Scroll to Top