Верх страницы
Логотип Telegram
@Злой_Полицейский — авторский канал вашего покорного слуги в Telegram, где я пишу заметки о веб-разработке, программировании, PHP, инструментах и WordPress.
Обложка к записи Как сделать поле ACF только для чтения
Время для прочтения: 0 мин. 35 сек.

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

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

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

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

Комментарии
Подписаться
Уведомить о
guest

2 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
NataliY
NataliY
2 лет назад

А нельзя запретить редактирование CSS?

Предыдущая запись

Михаил Кобзарёв (mihdan)

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, фильмы и сериалы