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

Источник: https://www.kobzarev.com/wordpress/acf-readonly/

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

Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все. Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса. Ведет блог о разработке, дайджест в телеграмме и в ВК. Любит сиськи, баню и радиоэлектронику. 100% патриот (но это не точно). Тролль 542 уровня. Ездит в отпуск раз в 5 лет.

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

%d такие блоггеры, как: