it-swarm.com.de

BuddyPress - Haken, um benutzerdefinierte Profilfelder zu aktualisieren

Ich arbeite an einer benutzerdefinierten App für einen Client, für den zusätzliche Felder im Benutzerprofil erforderlich sind. Ich habe erfolgreich eine Registrierungsseite erstellt, auf der die benutzerdefinierten Felder gespeichert werden. Nun muss ich dasselbe für die Seite "Profil bearbeiten" tun. Die Funktion, mit der ich die benutzerdefinierten Felder bei der Registrierung gespeichert habe, ist generisch genug, um sie auch für das Update zu verwenden. Ich kann jedoch nicht den richtigen Haken finden, damit es funktioniert. Ich habe "profile_update", "edit_user_profile_update" und "personal_options_update" ohne Erfolg ausprobiert. Fehlt mir hier etwas?

1
Joseph Leedy

Nachdem ich heute den BP-Quellcode durchgearbeitet habe, glaube ich, dass ich das endlich herausgefunden habe. Der Hook zum Aktualisieren von Profilfeldern in BuddyPress lautet "xprofile_data_before_save". Wenn jemand etwas besseres weiß, lass es mich wissen!

2
Joseph Leedy

Sie können auch die erweiterte Profilfunktion verwenden, die in buddypress enthalten ist, um zusätzliche Profilgruppen/-felder zu erstellen.

Dann können Sie alle Gruppen in die Register- oder Bearbeitungsseite aufnehmen, indem Sie nur die Schleife ersetzen

<?php if ( function_exists( 'bp_has_profile' ) ) : if ( bp_has_profile( 'profile_group_id=1' ) ) : while ( bp_profile_groups() ) : bp_the_profile_group(); ?>

mit:

<?php if ( function_exists( 'bp_has_profile' ) ) : if ( bp_has_profile() ) : while ( bp_profile_groups() ) : bp_the_profile_group(); ?>

Damit zeigen Sie alle Profilgruppen auf der Registerseite an. Sie können dasselbe mit edit.php tun, um alle Felder auf der Seite zum Bearbeiten des Profils anzuzeigen.

Damit dies richtig funktioniert, muss ein kleiner Tweak durchgeführt werden. Sie müssen das aus der Schleife bewegen und dann alle Feld-IDs wie folgt speichern:

Sie verschieben dies auch außerhalb der Schleife, damit es so aussieht:

<?php endwhile; endif; endif; ?>
<input type="hidden" name="signup_profile_field_ids" id="signup_profile_field_ids" value="<?php echo implode(",",$fields_ids);?>" />
</form>

Der letzte Teil ist, um sicherzustellen, dass alle Felder in der Datenbank gespeichert sind. Hoffe, es hilft, ich habe auf edit.php verwendet, aber es sollte das gleiche auf register.php funktionieren

Grüße

2
chifliiiii