Відхилити завантаження зображень неправильного розміру за допомогою засобу завантаження медіа


12

Я працюю над надто суворим налаштуванням для додавання зображень до спеціальних полів на екрані "Редагувати повідомлення". Моїм оптимальним сценарієм було б додати спеціальне повідомлення про помилку, коли користувач намагається завантажити зображення неправильного розміру для цього конкретного спеціального значення.

Я усвідомлюю, що можу це зробити з будь-яким користувальницьким завантажувачем, але я дійсно вважаю за краще робити це за допомогою звичайного медіа-завантажувача. Я також знаю про wp_handle_upload_prefilter, який я вже використовую для перевірки імен файлів і генерування користувацьких повідомлень про помилки на основі загальних вимог. Мені зараз потрібен спосіб використання спеціальних вимог для відхилення завантажень, залежно від того, у яке поле ми завантажуємо.

Я також знаю про диференціацію обраного зображення з розміщення зображень після завантаження, але я хотів вирішити попереднє збереження.

Це виглядатиме приблизно так:

введіть тут опис зображення

Будь-які ідеї щодо того, як рухатись до інформування wp_handle_upload_prefilter(чи подібного) того, в якому напрямку ми маємо справу?


Цікаве запитання. Я думаю, загалом кажучи, передайте користувацьку змінну за допомогою власного модального скрипта для завантаження медіа, який ви зможете пройти через подальшу диференціацію. Це може бути єдиний спосіб, хоча я не впевнений у цьому на 100%. Ви знайдете потрібну інформацію про це, якщо продовжуватимете та шукатимете її. Після цього поверніться і доповніть своє питання конкретною інформацією або, якщо ви вирішите її самостійно, опублікуйте своє рішення як відповідь. Удачі!
Миколай

Якщо я скажу звичайний, я маю на увазі користувальницьке використання WordPress Media Uploader, як, наприклад, обговорюваний тут .
Миколай

Так, я робив щось подібне раніше, за часів завантажувача Flash. Цього разу я йшов більш чистим шляхом, але це просто не можливо. Поглянемо на це, дякую!
moraleida

Я чую вас, але насправді не думаю, що це так погано, як це зробити. Крім того, як я вже говорив, я просто не бачу / не знаю іншого способу зробити це, але може з’явитися хтось разом з більшою кількістю знань, щоб зрозуміти це.
Миколай

1
Ви випереджаєте це? Якщо ні, але у вас є якийсь код, над яким ви працюєте, опублікуйте його. Я готовий налаштувати щедро на питання, чи є в цьому більше підстав.
Миколай

Відповіді:


4

Якщо ви встановите "помилка", у вашому оброблювальному повідомленні відобразиться повідомлення про помилку, яке скасує завантаження

add_filter( 'wp_handle_upload_prefilter', 'custom_upload_filter' );

function custom_upload_filter( $file ) {
    $image_info   = getimagesize( $file['tmp_name'] );
    $image_width  = $image_info[0];
    $image_height = $image_info[1];

    if ( $image_with !== 800 || $image_height !== 600 ) {
        $file['error'] = __( 'Images must be sized exactly 800 * 600', 'your_textdomain' );
    }
    return $file;
}

Якщо ваш користувач намагається завантажити інший розмір, повідомлення буде:

thefile.png has failed to upload due to an error  
Size must be exactly 800 * 600

Зауважте, що це wp_handle_upload_prefilterвідбувається дуже рано при обробці завантаження, тому ви, можливо, захочете перевірити, чи файл був правильно завантажений (з точки зору HTTP) і є зображенням перед тестуванням розміру.

Посилання: функція wp_handle_upload()в основному файліwp-admin/includes/file.php


Так, це те, що я вже роблю, щоб перевірити назви файлів та svg-властивостей. Що мені зараз потрібно - це спосіб передати інший параметр до цього (або іншого) фільтра, вказуючи, яке поле заповнюється цим завантаженням, щоб я міг застосовувати різні обмеження для різних полів. Це насправді затримано зараз. Пізніше я оновлю це питання зі своїми висновками.
moraleida
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.