{"id":373318,"date":"2026-09-22T12:49:48","date_gmt":"2026-09-22T12:49:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/svg-spritesheet-icons\/"},"modified":"2026-09-22T12:49:24","modified_gmt":"2026-09-22T12:49:24","slug":"safesprite-icons","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/safesprite-icons\/","author":23568593,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Safesprite Icons","header_author":"Kian Babaabady","header_description":"Secure icon library with footer SVG spritesheets. Does not enable Media Library SVG uploads.","assets_banners_color":"","last_updated":"2026-09-22 12:49:24","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/profiles.wordpress.org\/kianbabai09\/","header_plugin_uri":"","header_author_uri":"https:\/\/kianbabaabady.ir\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":53,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"kianbabai09","date":"2026-09-22 12:49:24","revision":3707352}},"upgrade_notice":{"1.0.0":"<p>First public release. Install and manage icons from Safesprite in wp-admin. Does not enable Media Library SVG uploads.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":{"safesprite\/icon":{"name":"safesprite\/icon","title":"SVG Icon"}},"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[76538,148076,498,282048,2904],"plugin_category":[50],"plugin_contributors":[282049],"plugin_business_model":[],"class_list":["post-373318","plugin","type-plugin","status-publish","hentry","plugin_tags-elementor","plugin_tags-gutenberg","plugin_tags-icons","plugin_tags-spritesheet","plugin_tags-svg","plugin_category-media","plugin_contributors-kianbabai09","plugin_committers-kianbabai09"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/safesprite-icons.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Safesprite Icons lets you manage brand icons in a dedicated plugin library (collections\/folders), sanitize every upload, and render icons with a lightweight <code>&lt;use&gt;<\/code> reference plus a single footer spritesheet.<\/p>\n\n<h4>Security first<\/h4>\n\n<ul>\n<li>SVG uploads are accepted <strong>only<\/strong> through the plugin Icon Library<\/li>\n<li>This plugin does <strong>not<\/strong> enable SVG uploads in the WordPress Media Library<\/li>\n<li>Uploads are sanitized with the vendored <code>enshrined\/svg-sanitize<\/code> library (GPL-2.0-or-later), shipped inside the plugin<\/li>\n<li>Front-end output uses sanitized <code>&lt;symbol&gt;<\/code> sprites + <code>&lt;use&gt;<\/code> \u2014 not raw uploaded files as <code>&lt;img src&gt;<\/code><\/li>\n<\/ul>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Collections (one collection per icon)<\/li>\n<li>Rename icon titles and collection names (slugs stay stable)<\/li>\n<li>Trash \/ restore \/ permanent delete<\/li>\n<li>Shortcode: <code>[sfsi_icon slug=\"my-icon\"]<\/code><\/li>\n<li>PHP helper: <code>sfsi_icon( 'my-icon' )<\/code><\/li>\n<li>Gutenberg block<\/li>\n<li>TinyMCE button<\/li>\n<li>Elementor widget (loads only when Elementor is active)<\/li>\n<li>Nav menu item icons<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>safesprite-icons<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the Plugins menu<\/li>\n<li>Open <strong>Safesprite<\/strong> in wp-admin, create a collection, upload SVGs<\/li>\n<li>Insert icons via block, shortcode, TinyMCE, menus, or Elementor<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20allow%20svg%20in%20the%20media%20library%3F\"><h3>Does this allow SVG in the Media Library?<\/h3><\/dt>\n<dd><p>No. Icons are managed only in the plugin library.<\/p><\/dd>\n<dt id=\"where%20are%20files%20stored%3F\"><h3>Where are files stored?<\/h3><\/dt>\n<dd><p>Sanitized SVG files live under <code>wp-content\/uploads\/safesprite-icons\/<\/code> with opaque filenames. Metadata is stored in plugin custom tables (not as custom post types).<\/p><\/dd>\n<dt id=\"what%20happens%20on%20uninstall%3F\"><h3>What happens on uninstall?<\/h3><\/dt>\n<dd><p>By default, data is kept. Enable \u201cDelete all plugin data on uninstall\u201d under Safesprite -&gt; Settings if you want tables and files removed.<\/p><\/dd>\n<dt id=\"what%20php%20extensions%20are%20required%3F\"><h3>What PHP extensions are required?<\/h3><\/dt>\n<dd><p>PHP 7.4+ with the <code>dom<\/code> and <code>libxml<\/code> extensions (used by the SVG sanitizer).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First wordpress.org release candidate<\/li>\n<li>Secure Icon Library with sanitized uploads and footer spritesheets<\/li>\n<li>Gutenberg, Elementor, TinyMCE, Nav Menus, shortcode, and PHP helper<\/li>\n<li>Hardened SVG sanitization (no Media Library SVG enablement)<\/li>\n<\/ul>\n\n<h4>0.2.15<\/h4>\n\n<ul>\n<li>Security: strip SVG <code>&lt;style&gt;<\/code> \/ <code>style=<\/code> and remote hrefs after sanitize<\/li>\n<li>Performance: skip upload-dir ensure on front requests; memoize icon lookups<\/li>\n<li>Fix: nav menu icon meta no longer wiped on unrelated saves<\/li>\n<li>Packaging: exclude list moved to docs (no <code>.distignore<\/code> in plugin \u2014 Plugin Check)<\/li>\n<\/ul>\n\n<h4>0.2.14<\/h4>\n\n<ul>\n<li>Plugins list: Settings action link to Safesprite -&gt; Settings<\/li>\n<\/ul>\n\n<h4>0.2.13<\/h4>\n\n<ul>\n<li>Rename icon titles and collection names (slugs unchanged)<\/li>\n<li>Icon picker: search by title or slug<\/li>\n<li>Nav menus: icon preview and Clear control<\/li>\n<\/ul>\n\n<h4>0.2.12<\/h4>\n\n<ul>\n<li>Gutenberg editor: size and color preview match Elementor (no fixed admin tile CSS)<\/li>\n<\/ul>\n\n<h4>0.2.11<\/h4>\n\n<ul>\n<li>Elementor canvas: fix size slider and custom color live preview<\/li>\n<\/ul>\n\n<h4>0.2.10<\/h4>\n\n<ul>\n<li>Elementor editor: show inline icon preview (canvas has no footer spritesheet)<\/li>\n<\/ul>\n\n<h4>0.2.9<\/h4>\n\n<ul>\n<li>Elementor &amp; Gutenberg: visual icon picker, size slider (16\u2013256px), inherit or custom color<\/li>\n<\/ul>\n\n<h4>0.2.8<\/h4>\n\n<ul>\n<li>Trash: bulk select, restore, and permanently delete icons and collections<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release candidate build<\/li>\n<\/ul>","raw_excerpt":"Secure icon library with footer SVG spritesheets. Does not enable Media Library SVG uploads.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/373318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=373318"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/kianbabai09"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=373318"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=373318"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=373318"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=373318"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=373318"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=373318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}