web-dev-qa-db-ja.com

BuddyPress - カスタムプロファイルフィールドを更新するためのフック

私はユーザーのプロフィールにいくつかの追加のフィールドを必要とするクライアント用のカスタムアプリに取り組んでいます。カスタムフィールドを保存する登録ページを作成しました。次に、[プロフィールの編集]ページでも同じ手順を実行する必要があります。登録時にカスタムフィールドを保存するために使用した関数は、汎用的なもので、更新にも使用できると思います。しかし、それを機能させるための正しいフックが見つかりません。私は「profile_update」、「edit_user_profile_update」、および「personal_options_update」を試してみましたが、うまくいきませんでした。ここに足りないものはありますか。

1
Joseph Leedy

今日のBPソースコードを熟読した後、私はついにこれを理解したと私は信じます。 BuddyPressでプロフィールフィールドを更新するために使用されるフックは "xprofile_data_before_save"です。誰かがもっと良いことを知っているなら、私に知らせてください!

2
Joseph Leedy

追加のプロファイルグループ/フィールドを作成するために、buddypressに含まれる拡張プロファイル機能を使用することもできます。

その後、ループを置き換えるだけで、すべてのグループを登録ページまたは編集ページに追加できます。

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

と:

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

それを使用すると、登録ページにすべてのプロファイルグループが表示されます。 edit.phpでも同じことができ、プロファイル編集ページのすべてのフィールドを表示できます。

これを正しく機能させるためには、微調整をする必要があることを知っています。あなたはループの外に移動してから、このようにすべてのフィールドIDを保存する必要があります。

また、これをループの外側に移動すると、次のようになります。

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

最後の部分は、すべてのフィールドがデータベースに保存されていることを確認することです。それが役立つことを願って、私はedit.phpに使用されますが、それはregister.phpに同じように動作するはずです

よろしく

2
chifliiiii