Как сделать поле ACF только для чтения

Как сделать поле ACF только для чтения

Иногда нам требуется запретить редактировать 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 хука для фильтрации полей ввода.

  1. acf/load_field – хук для каждого поляhook every field.
  2. acf/load_field/type={$field_type} – хук для поля ввода определённого типа.
  3. acf/load_field/name={$field_name} – хук для поля ввода с определённыи именем.
  4. 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');

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *