Верх страницы
Обложка к записи Как сделать поле ACF только для чтения
Время для прочтения: 2 мин. 11 сек.

Как сделать поле 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' );

Источник: Easiest way to make ACF field readonly

ВКонтакте
Одноклассники
Linkedin
Telegram
WhatsApp

Автор: Кобзарёв Михаил

Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все.

Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса.

Ведет блог о разработке, дайджест в телеграмме и в ВК.

Комментарии