array( 'sanitize_email' => 'Sanitize email (sanitize_email)', 'sanitize_file_name' => 'Sanitize file name (sanitize_file_name)', 'sanitize_html_class' => 'Sanitize html class (sanitize_html_class)', 'sanitize_key' => 'Sanitize key (sanitize_key)', 'sanitize_meta' => 'Sanitize meta (sanitize_meta)', 'sanitize_mime_type' => 'Sanitize mime type (sanitize_mime_type)', 'sanitize_option' => 'Sanitize option (sanitize_option)', 'sanitize_text_field' => 'Sanitize text field (sanitize_text_field)', 'sanitize_title' => 'Sanitize title (sanitize_title)', 'sanitize_user' => 'Sanitize user (sanitize_user)', ), ); } add_action('acf/render_field_settings', 'acfe_update_settings', 991); function acfe_update_settings($field){ $exclude = false; $exclude = apply_filters('acfe/update/exclude/key=' . $field['key'], $exclude, $field); $exclude = apply_filters('acfe/update/exclude/name=' . $field['name'], $exclude, $field); $exclude = apply_filters('acfe/update/exclude/type=' . $field['type'], $exclude, $field); if($exclude) return; $choices = apply_filters('acfe/update/functions', array(), $field); if(empty($choices)) return; // Settings acf_render_field_setting($field, array( 'label' => __('Filters'), 'name' => 'acfe_update', 'key' => 'acfe_update', 'instructions' => __('Filter value right before saving'), 'type' => 'repeater', 'button_label' => __('Add filter'), 'required' => false, 'sub_fields' => array( array( 'label' => 'Function', 'name' => 'acfe_update_function', 'key' => 'acfe_update_function', 'prefix' => '', '_name' => '', '_prepare' => '', 'type' => 'select', 'choices' => $choices, 'instructions' => false, 'required' => false, 'wrapper' => array( 'width' => '', 'class' => '', 'id' => '', ), ), ) ), true); } add_filter('acf/update_value', 'acfe_update_value', 99, 3); function acfe_update_value($value, $post_id, $field){ if(!isset($field['acfe_update']) || empty($field['acfe_update'])) return $value; $exclude = false; $exclude = apply_filters('acfe/update/exclude/key=' . $field['key'], $exclude, $field); $exclude = apply_filters('acfe/update/exclude/name=' . $field['name'], $exclude, $field); $exclude = apply_filters('acfe/update/exclude/type=' . $field['type'], $exclude, $field); if($exclude) return $value; foreach($field['acfe_update'] as $vkey => $function){ // Check filters $filters = array( 'acfe/update/function/' . $rule['acfe_update_function'] . '/key=' . $field['key'], 'acfe/update/function/' . $rule['acfe_update_function'] . '/name=' . $field['name'], 'acfe/update/function/' . $rule['acfe_update_function'] . '/type=' . $field['type'], 'acfe/update/function/' . $rule['acfe_update_function'], ); $filter_call = false; foreach($filters as $filter){ if(has_filter($filter)) $filter_call = $filter; } if(!$filter_call && !is_callable($function['acfe_update_function'])) continue; // Apply Filter if($filter_call) $value = apply_filters($filter_call, $value, $post_id, $field); // [or] Call Function else $value = call_user_func($function['acfe_update_function'], $value); } return $value; }