Завантаження SVG

WordPress за замовчуванням не дозволяє завантаження SVG-файлів, оскільки цей XML-формат файлів може містити шкідливий код. Це може бути особливо небезпечно, коли файли завантажуються з невідомих/недовірених джерел або недовіреними користувачами.

Як активувати підтримку SVG

Ви можете активувати завантаження SVG на основі ролі користувача в розділі Esl > Налаштування > Завантаження SVG (вкладка: Загальні). Після активації Esl спробує очистити будь-які завантажені SVG-файли.

Важливо зазначити, що жоден вбудований очищувач SVG не має 100% гарантії видалення всього шкідливого коду. Тому вам слід завантажувати SVG-файли тільки з довірених джерел і активувати завантаження SVG лише для ролей користувачів, яким ви довіряєте дотримуватися цього правила.

Обхід очищення

Хоча доцільно очищати всі SVG-файли, завантажені в WordPress, може виникнути ситуація, коли ви не хочете покладатися на очищувач SVG Esl. Щоб обійти логіку очищення, Esl надає хук esl/svg/bypass_sanitization, і ви можете використовувати його таким чином:

add_filter( 'esl/svg/bypass_sanitization', function( $bypass, $file ) {// Виконайте якусь логіку, щоб вирішити, обходити очищення чи ніreturn $bypass;}, 10, 2 );

Параметри зворотного виклику фільтра:

  • $bypass – булева змінна (true = обхід)
  • $file представляє один елемент масиву $_FILES

Якщо ви просто хочете обійти очищення без умов, ви можете використати цей короткий підхід:

add_filter( 'esl/svg/bypass_sanitization', '__return_true' );

Дозволені теги та атрибути очищувача

Очищувач використовує попередньо визначений список дозволених тегів та атрибутів. У деяких крайніх випадках ви хочете завантажити SVG-файли, які містять інші теги та атрибути, тому вам потрібно включити їх у дозволений список. Або, можливо, ви хочете звузити дозволені теги та атрибути з міркувань безпеки. Щоб керувати цими списками, Esl має два різні фільтри:

add_filter( 'esl/svg/allowed_tags', function( $tags ) {$tags[] = 'filter'; // Дозволити тег "filter"return $tags;} );
add_filter( 'esl/svg/allowed_attributes', function( $attributes ) {$attributes[] = 'filterUnits'; // Дозволити атрибут "filterUnits"return $attributes;} );