Safe SVG

Описание

Safe SVG – лучший способ реализовать загрузку SVG в WordPress!

Плагин даёт возможность разрешать загрузку SVG, в то же время следя за тем, чтобы они были очищены, для предотвращения угроз SVG/XML, потенциально влияющих на сайт.
Также даёт возможность просматривать загруженные SVG-файлы в медиа-библиотеке во всех размерах.

Текущий функционал

  • Очищенные SVG — Не создавайте дыры в безопасности вашего WordPress сайта, разрешая загрузку неочищенных файлов.
  • Оптимизация SVGO — При загрузке прогоняет ваши SVG через инструмент SVGO, чтобы сэкономить место. По умолчанию эта функция отключена, но ее можно включить, добавив следующий код: add_filter( 'safe_svg_optimizer_enabled', '__return_true' );
  • Просмотр SVG в библиотеке медиафайлов — Прошли те времена, когда нужно было угадывать, какой SVG правильный, мы включим предварительный просмотр SVG в медиатеке WordPress.
  • Выберите, кто может загружать — Ограничьте загрузку SVG определенным пользователям на вашем WordPress сайте или позвольте загружать их всем желающим.

Первоначальный концепт: #24251

Очистка SVG осуществляется с помощью следующей библиотеки: https://github.com/darylldoyle/svg-sanitizer

Оптимизация SVG осуществляется с помощью следующей библиотеки: https://github.com/svg/svgo.

Блоки

Этот плагин предоставляет 1 блок.

  • Safe SVG Display the SVG icon

Установка

Установить прямо через WordPress, либо загрузить, распаковать и выгрузить файлы в директорию /wp-content/plugins/ вашего сайта

Часто задаваемые вопросы

Можно ли изменить разрешенные атрибуты и теги?

Да, это возможно, используя фильтры svg_allowed_attributes и svg_allowed_tags.
Они принимают один аргумент, который должен быть возвращен. Смотрите примеры ниже:

add_filter( 'svg_allowed_attributes', function ( $attributes ) {

    // Do what you want here...

    // This should return an array so add your attributes to
    // to the $attributes array before returning it. E.G.

    $attributes[] = 'target'; // This would allow the target="" attribute.

    return $attributes;
} );


add_filter( 'svg_allowed_tags', function ( $tags ) {

    // Do what you want here...

    // This should return an array so add your tags to
    // to the $tags array before returning it. E.G.

    $tags[] = 'use'; // This would allow the <use> element.

    return $tags;
} );

Отзывы

21.06.2025 1 ответ
Would have given a 5 star, but it seems support is missing for the taxonomy / terms section (like in categories) upload for SVG images. Keep getting an error that the upload isn’t supported. Hopefully this will be fixed in a future update. Will update once this is added. Cheers!
30.04.2025 1 ответ
Great plugin! very usefull, but please can you add the possibility to add an inline SVG on the block pasting svg code? Thanks!
Посмотреть все 76 отзывов

Участники и разработчики

«Safe SVG» — проект с открытым исходным кодом. В развитие плагина внесли свой вклад следующие участники:

Участники

«Safe SVG» переведён на 29 языков. Благодарим переводчиков за их работу.

Перевести «Safe SVG» на ваш язык.

Заинтересованы в разработке?

Посмотрите код, проверьте SVN репозиторий, или подпишитесь на журнал разработки по RSS.

Журнал изменений

2.4.0 — 2025-09-22

  • Добавлено: Возможность загружать SVG из большего количества мест администрирования (реквизиты @stormrockwell, @darylldoyle, @wpexplorer, @smerriman, @jeffpaul, @dkotter через #279).
  • Изменения: Добавлен аргумент $attachment_id к фильтрам safe_svg_use_width_height_attributes и safe_svg_dimensions (реквизиты @roborourke, @dkotter через #278).
  • Исправлено: Несоответствующий или неправильный тип данных для аргумента $svg в фильтрах safe_svg_use_width_height_attributes и safe_svg_dimensions (реквизиты @roborourke, @dkotter через #278).

2.3.3 — 2025-08-13

  • Безопасность: Обновите пакет enshrined/svg-sanitize с 0.19.0 до 0.22.0, чтобы исправить проблему с пропуском атрибутов, не зависящих от регистра, через санитайзер и устранить предупреждения о депривации PHP 8.4 (реквизиты @darylldoyle, @sudar, @georgestephanis, @dkotter, @realazizk через #268, #272).
  • Безопасность: Переведите form-data с версии 4.0.0 на 4.0.4 (реквизиты @dependabot, @faisal-alvi через #270).
  • Безопасность: Переведите tmp с версии 0.2.3 на 0.2.5 и @inquirer/editor с версии 4.2.9 на 4.2.16 (реквизиты @dependabot, @dkotter через #271).

2.3.2 — 2025-07-21

  • Исправлено: Визуальное соответствие между фронт-эндом и блочным редактором (реквизиты @s3rgiosan, @dkotter через #261, #266).
  • Изменения: Поднимите WordPress «проверенный до» версии 6.8 (реквизиты @godleman, @jeffpaul, @dkotter через #251, #254).
  • Изменения: Повысьте минимальную поддерживаемую версию WordPress до 6.6 (реквизиты @godleman, @jeffpaul, @dkotter через #254).
  • Безопасность: Обновите ws с 7.5.10 до 8.18.0, @wordpress/scripts с 27.9.0 до 30.6.0, nanoid с 3.3.7 до 3.3.8 и mocha с 10.2.0 до 11.0.1 (реквизиты @dependabot, @peterwilsoncc через #245).
  • Безопасность: Сбросьте @babel/runtime с 7.23.9 до 7.27.0, axios с 1.7.4 до 1.8.4, cookie с 0.4.2 до 0.7.1, express с 4.21.0 до 4.21.2 и @wordpress/e2e-test-utils-playwright с 0.26.0 по 1.20.0 (реквизиты @dependabot, @dkotter через #250).
  • Безопасность: Переведите http-proxy-middleware с версии 2.0.6 на версию 2.0.9 (реквизиты @dependabot, @iamdharmesh через #253).
  • Безопасность: Переведите tar-fs с версии 3.0.8 на 3.0.9 (реквизиты @dependabot, @dkotter через #258).
  • Безопасность: Повысьте bytes с 3.0.0 до 3.1.2 и compression с 1.7.4 до 1.8.1 (реквизиты @dependabot, @dkotter через #265).

2.3.1 — 2024-12-05

2.3.0 — 2024-11-25

  • Добавлено: новый параметр, позволяющий загружать и правильно очищать большие файлы SVG (примерно 10 МБ или больше) (реквизиты @kirtangajjar, @faisal-alvi, @darylldoyle, @manojsiddoji, @dkotter через #201).
  • Добавлено: новая функция get_svg_dimensions для уменьшения дублирования кода (реквизиты @gabriel-glo, @jeremymoore, @darylldoyle, @iamdharmesh, @dkotter через #216).
  • Изменено: Обновлен пакет enshrined/svg-sanitize с версии 0.16.0 до 0.19.0 для исправления проблемы совместимости с PHP 8.3 (реквизиты @sksaju, @TylerB24890, @darylldoyle, @rolf-yoast, @faisal-alvi через #214).
  • Изменено: обновлен способ передачи размеров изображения в методах get_image_tag_override и one_pixel_fix (реквизиты @gabriel-glo, @jeremymoore, @darylldoyle, @iamdharmesh, @dkotter через #216).
  • Изменено: Поднятие версии WordPress «tested up to» до 6.7 (реквизиты @colinswinney, @jeffpaul через #232, #233).
  • Изменено: Минимальная версия WordPress повышена с 6.4 до 6.5 (реквизиты @colinswinney, @jeffpaul через #232, #233).
  • Изменено: Удалите зависимости Composer dev из архивированного проекта (реквизиты @TylerB24890, @szepeviktor, @peterwilsoncc через #220).
  • Исправлено: используйте правильную категорию блока для блока безопасной иконки SVG (реквизиты @kirtangajjar, @fabiankaegy через #226).
  • Безопасность: разрешается загрузка файлов SVG только в том случае, если наш санитайзер может работать с этими файлами (props @darylldoyle, @xknown, @dkotter через #228).
  • Безопасность: Переведите webpack с версии 5.90.1 на 5.94.0 (реквизиты @dependabot, @peterwilsoncc через #222).
  • Безопасность: Переход ws с 7.5.10 на 8.18.0, serve-static с 1.15.0 на 1.16.2 и express с 4.19.2 на 4.21.0 (props @dependabot, @Sidsector9, @faisal-alvi через #227, #230, #234).

2.2.6 — 2024-08-28

  • Изменено: Обновление WordPress «tested up to» до версии 6.6 (реквизиты @sudip-md, @ankitguptaindia, @jeffpaul через #212, #213).
  • Изменено: Минимальная версия WordPress увеличена с 5.7 до 6.4 (реквизиты @sudip-md, @ankitguptaindia, @jeffpaul через #212, #213).
  • Безопасность: добавьте очистку svg в фильтр wp_handle_sideload_prefilter (реквизиты @dkotter, @xknown, @iamdharmesh через GHSA-3vr7-86pg-hf4g).
  • Безопасность: Поднимите braces с 3.0.2 до 3.0.3, pac-resolver с 7.0.0 до 7.0.1, socks с 2.7.1 до 2.8.3, ws с 7.5.9 до 7.5.10 и удалите ip (реквизиты @dependabot, @Sidsector9 через #206).
  • Безопасность: Переведите axios с версии 1.6.7 на версию 1.7.4 (реквизиты @dependabot, @faisal-alvi через #218).

Смотрите журнал изменений проекта здесь.