acf/prepare_field

Description

Used to modify the $field settings or to prevent the field from being rendered within a form.

This filter is similar to acf/load_field, only it is applied later in the lifecycle when the field is about to be rendered. By this time, the field’s value has also been loaded.

Changelog

  • Added in version 5.0.0

Parameters

apply_filters( 'acf/prepare_field', $field );
  • $field (array) The field array containing all settings (including value).

Modifers

This filter provides modifiers to target specific fields. The following filter names are available:

  • acf/prepare_field Applies to all fields.
  • acf/prepare_field/type={$type} Applies to all fields of a specific type.
  • acf/prepare_field/name={$name} Applies to all fields of a specific name.
  • acf/prepare_field/key={$key} Applies to all fields of a specific key.

Examples

Modifying a field

This example demonstrates how to modify a specific field’s settings before it is rendered.

functions.php

<?php
function my_acf_prepare_field( $field ) {

    // Lock-in the value "Example".
    if( $field['value'] === 'Example' ) {
        $field['readonly'] = true;
    };
    return $field;
}

// Apply to all fields.
// add_filter('acf/prepare_field', 'my_acf_prepare_field');

// Apply to select fields.
// add_filter('acf/prepare_field/type=select', 'my_acf_prepare_field');

// Apply to fields named "example_field".
add_filter('acf/prepare_field/name=example_field', 'my_acf_prepare_field');

// Apply to field with key "field_123abcf".
// add_filter('acf/prepare_field/key=field_123abcf', 'my_acf_prepare_field');

Preventing a field

This example demonstrates how to prevent a field from being rendered.

functions.php

<?php
function my_acf_prepare_field( $field ) {

    // Don't show this field once it contains a value.
    if( $field['value'] ) {
        return false;
    }
    return $field;
}

// Apply to fields named "example_field".
add_filter('acf/prepare_field/name=example_field', 'my_acf_prepare_field');