Иногда нам требуется запретить редактировать ACF поля, но оставить возможность его просматривать, то есть сделать поле «только для чтения».
Например, у вас на сайте это поле обновляется по крону. Для сохранения значения корректным мы разрешаем администратору только смотреть, но не редактировать это поле.
Для этого воспользуемся фильтрами acf/load_field.
Функция для изменения ACF поля
Для начала нам нужно написать функцию, которая будет изменять значение элемента массива заданного поля. Функция должна установить значение 1
для элемента массива, где ключ readonly
, и вернуть массив обратно.
function mihdan_acf_read_only( $field ) { $field['readonly'] = 1; return $field; }
Теперь мы должны привязать эту функцию к одному из фильтров, используя функцию add_filter.
Имеющиеся хуки ACF
Плагин Advanced custom fields имеет 4 хука для фильтрации полей.
- acf/load_field – хук для каждого поляhook every field.
- acf/load_field/type={$field_type} – хук для поля определённого типа.
- acf/load_field/name={$field_name} – хук для поля с определённыи именем.
- acf/load_field/key={$field_key} – хук для поля с определённым ключом.
Давайте воспользуемся фильтром acf/load_field/key={$field_key}
, чтобы изменить параметры только для одного определённого поля. В нашем примере ключ поля field_5b3a30ca02e47
, поэтому хук выглядит как acf/load_field/key=field_5b3a30ca02e47
. Его мы и используем в функции add_filter.
add_filter( 'acf/load_field/key=field_5b3a30ca02e47', 'mihdan_acf_read_only' );
Финальный код
function mihdan_acf_read_only( $field ) { $field['readonly'] = 1; return $field; } add_filter( 'acf/load_field/key=field_5b3a30ca02e47', 'mihdan_acf_read_only' );
Источник: Easiest way to make ACF field readonly