This article contains PHP code and is intended for developers. We offer this code as a courtesy, but don't provide support for code customizations or 3rd party development.
This hook allows you to change the order of the options in a Dynamic field or remove unwanted options. This hook cannot be used for dependent Dynamic fields. Instead, use the frm_setup_new_fields_vars hook.
Usage
add_filter('frm_data_sort', 'frm_custom_data_sort', 20, 2); function frm_custom_data_sort($options, $atts)
Parameters
- $options (array): all of the options in the Dynamic field with the entry ID as the item key.
- $atts (array): $atts['dynamic_field'] includes the Dynamic field array. $atts['field'] contains the field object for the linked field (not the Dynamic field).
Examples
Order options by entry ID
Use this code to sort your Dynamic field options by the order the entries were added.
add_filter('frm_data_sort', 'frm_my_data_sort', 21, 2);
function frm_my_data_sort( $options, $atts ) {
if ( $atts['dynamic_field']['id'] == 100 ) { //change 100 to the ID of the Dynamic field
ksort( $options );//sorts options by entry ID
}
return $options;
}
Remove duplicates from Dynamic field
Use this code to remove duplicate values from a Dynamic field. Please note, this should not be used if you are using the Dynamic field to link entries. It is only recommended when using a Dynamic field in a search form.
add_filter('frm_data_sort', 'frm_remove_duplicates', 21, 2);
function frm_remove_duplicates( $options, $atts ) {
if ( $atts['dynamic_field']['id'] == 100) { //change 100 to the ID of the Dynamic field
$options = array_unique( $options );
}
return $options;
}
Order dynamic options with conditionals
Use this code to sort your Dynamic field options if there is conditional logic on the field.
add_filter('frm_data_sort', 'frm_data_sort_conditional', 30, 2);
function frm_data_sort_conditional($options, $args) {
$target_field_id = 100; // Change 100 to the child field ID.
if ( $target_field_id === (int) $args['dynamic_field']['id'] ) {
ksort( $options );
}
return $options;
}