Skip to:

03/22/2021 07:45:24 PM (6 months ago)

Prepare the xProfile component to handle the WordPress field types

  • Add a cache group to cache usermeta IDs by user IDs to avoid requesting information more than necessary when it hasn't been updated.
  • Edit the Profile field sanitization filter bp_xprofile_escape_field_data so that WordPress fields are escaped the way WordPress does.
  • Add the two new Field types wp-biography & wp-textbox to the available ones. See bp_xprofile_get_field_types().
  • Introduce the bp_xprofile_get_field_type() function to get the fied type of a field thanks to its ID.
  • Introduce a new filter bp_xprofile_set_field_data_pre_save. This filter returns false by default. You can use it to avoid using the Profile data DB table to save a field value by returning a WP_Error object or true. This filter is used by the WordPress field types to avoid duplicating the corresponding usermeta values into the Profile data DB table.
  • Introduce the bp_xprofile_get_wp_user_keys() function to inform about the supported WordPress fields (first_name, last_name, user_url, description and potential WP contact methods).
  • Edit the BP_XProfile_ProfileData methods to fetch field data so that they now try to fetch data within the usermeta table if the xProfile field has a WordPress field type.
  • Deprecate the BP_XProfile_ProfileData::get_value_byfieldname() as it's no more used into BP Core code.
  • Edit the function used to output the fields into the WP Admin/Extended profile screen so that WordPress fields are ignored as they can be updated from the WP Admin regular profile.

Props DJPaul, Offereins, needle, netweb, vapvarun

See #7162

1 edited


  • trunk/src/bp-xprofile/bp-xprofile-filters.php

    r12806 r12869  
    353353 */
    354354function bp_xprofile_escape_field_data( $value, $field_type, $field_id ) {
     355    // Sanitization for these types is directly done into their `display_filter()` method.
     356    if ( 'wp-biography' === $field_type || 'wp-textbox' === $field_type ) {
     357        return $value;
     358    }
    355360    if ( bp_xprofile_is_richtext_enabled_for_field( $field_id ) ) {
    356361        // The xprofile_filter_kses() expects a BP_XProfile_ProfileData object.
Note: See TracChangeset for help on using the changeset viewer.