BP_XProfile_Field::update_position( int $field_id, int|null $position = null, int|null $field_group_id = null )

Update field position and/or field group when relocating.

Description

Parameters

$field_id

(Required) ID of the field to update.

$position

(Optional) Field position to update.

Default value: null

$field_group_id

(Optional) ID of the field group.

Default value: null

Return

(boolean)

Source

File: bp-xprofile/classes/class-bp-xprofile-field.php

1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
public static function update_position( $field_id, $position = null, $field_group_id = null ) {
    global $wpdb;
 
    // Bail if invalid position or field group.
    if ( ! is_numeric( $position ) || ! is_numeric( $field_group_id ) ) {
        return false;
    }
 
    // Get table name and field parent.
    $table_name = buddypress()->profile->table_name_fields;
    $sql        = $wpdb->prepare( "UPDATE {$table_name} SET field_order = %d, group_id = %d WHERE id = %d", $position, $field_group_id, $field_id );
    $parent     = $wpdb->query( $sql );
 
    // Update $field_id with new $position and $field_group_id.
    if ( ! empty( $parent ) && ! is_wp_error( $parent ) ) {
 
        // Update any children of this $field_id.
        $sql = $wpdb->prepare( "UPDATE {$table_name} SET group_id = %d WHERE parent_id = %d", $field_group_id, $field_id );
        $wpdb->query( $sql );
 
        // Invalidate profile field cache.
        wp_cache_delete( $field_id, 'bp_xprofile_fields' );
 
        do_action( 'xprofile_updated_field_position', $field_id, $position, $field_group_id );
 
        return $parent;
    }
 
    return false;
}

Changelog

Changelog
Version Description
BuddyPress 1.5.0 Introduced.

Questions?

We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.