acf/validate_attachment — фильтр проверки вложений

Описание

Используется для выполнения пользовательской проверки вложения и предотвращения его загрузки или выбора для конкретного поля.

Похож на фильтр 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