Описание
Используется для выполнения пользовательской проверки вложения и предотвращения его загрузки или выбора для конкретного поля.
Похож на фильтр acf/upload_prefilter: этот фильтр можно использовать, чтобы запретить загрузку, однако он также позволяет предотвратить выбор вложения в модальном окне медиафайлов WP.
Изменения
- Добавлено в версии 5.2.8
- Добавлен параметр
contextв версии 5.6.3
Параметры
apply_filters( 'acf/validate_attachment', $errors, $file, $attachment, $field, $context );$errors(array) Массив сообщений об ошибках (строк) для данного вложения. Добавление элементов в этот массив приведёт к ошибке загрузки вложения, а сообщение об ошибке будет показано клиенту.$file(array) Массив общих данных файла, включая тип, ширину, высоту и размер.$attachment(array) Вложение, которое загружается/отображается. Эти данные меняются в зависимости от контекста.$field(array) Массив поля, содержащий все настройки.$context(string) Описание текущего контекста: upload, basic_upload (при загрузке) или prepare (при просмотре). Добавлено в 5.6.3.
Модификаторы
Этот фильтр предоставляет модификаторы для выбора конкретных полей. Доступны следующие имена фильтров:
acf/validate_attachmentПрименяется ко всем полям.acf/validate_attachment/type={$type}Применяется ко всем полям определённого типа.acf/validate_attachment/name={$name}Применяется ко всем полям с определённым именем.acf/validate_attachment/key={$key}Применяется ко всем полям с определённым ключом.
Пример
В этом примере показано, как проверить имя файла у всех вложений. Если имя файла вложения не начинается со строки "acf-", будет показано сообщение об ошибке, и загрузка/выбор завершится неудачей.
functions.php
<?php
add_filter('acf/validate_attachment', 'my_acf_validate_attachment', 10, 5);
function my_acf_validate_attachment( $errors, $file, $attachment, $field, $context ){
// Проверяем первые 4 символа имени вложения.
if( substr($attachment['name'], 0, 4) !== 'acf-' ) {
$errors[] = __( 'Имя файла должно начинаться с "acf-"' );
}
return $errors;
}Обновлено: 02.06.2026