Check out the Aqua SVG Sprite plugin, available on the official WordPress plugin repository!
- Why use this plugin?
- Creating a Sprite
- Creating Additional Sprites
- Shortcode Usage
- PHP Usage
- Use With Other Plugins
SVG, or Scalable Vector Graphics, allow you to add resolution-independent images to your websites. These images are generally much sharper and smaller in file size compared to other formats like JPEG.
However, each SVG image needs to be requested separately, which slows down your website. Adding SVG images to a sprite allows the browser to download multiple images with just one request, then show the individual pieces of the sprite separately. Depending on the number of images you’re displaying, this can significantly speed up your website.
Aqua SVG Sprite adds a new SVG Sprite menu to the WordPress sidebar, which functions a lot like the default Posts or Pages menus; you can add, edit, and delete individual SVG images under All Items.
When you add or edit an item, You’re able to choose a few things:
- The Title makes it easy to find an individual SVG and is also used for selecting an SVG by the shortcode generator button.
- The Slug is used as the ID for the symbol in the sprite, which essentially allows WordPress to extract one SVG image from the sprite and display it on the page.
- The Aqua SVG Sprite Image is where you add a single SVG image that gets added to the sprite.
- There are some basic instructions on usage, pre-populated with the ID and group (explained in the next section) for the individual SVG you’re viewing.
- In the sidebar, you can select a Sprite Group as explained in the next section.
- Last of course, Publish adds the SVG to the sprite.
If you’d like to use more than one sprite (the built in General sprite), you can add additional groups by going to the sidebar and clicking SVG Sprite > Sprite Groups. These work similar to WordPress tags, except you can only add each individual SVG image to one sprite group. Since they’re compiled into separate sprite groups, marking the same SVG for multiple groups would duplicate code, somewhat defeating the purpose of a sprite.
After you add a new Sprite Group, it appears as a selection in the right sidebar’s Sprite Group selector when creating or editing individual SVG images.
Aqua SVG Sprite will add a convenient
[SVG] button to your editor (anywhere a WYSIWYG with TinyMCE appears). Clicking this brings up a menu in which you can select an image and add some optional attributes.
- You can chose the sprite group and individual SVG image you wish to add to the page.
- You can optionally add a Width and Height to the SVG. If not controlling this through CSS instead, typically you can add a digit and it will use that as a pixel value; for example, if you enter
25for both the output will be 25x25px in size (assuming no CSS overrides either value).
- You can add additional advanced options as a pseudo array that gets separated into individual property/value pairs. For instance, you could add
viewbox=0 0 1000 1000,fill=aquamarineto change the viewBox and fill color of the SVG image output.
You could for example display the image titled “Some Slug” from the default sprite group titled “General” like so (notice however it needs the slug and not the title since slugs are always unique):
If “Some Slug” were part of the “Some Group” sprite, you would use:
[aqua-svg slug="some-slug" sprite="some-group"]
If you wanted a fill color and to define the viewBox, you would add a pseudo-array of HTML properties for more control:
[aqua-svg slug="some-slug" sprite="some-sprite" attr="viewbox=0 0 1000 1000,fill=aquamarine"]
Developers can also use the underlying API directly, avoiding the abstracted shortcode option. A call to
the_aqua_svg( 'some-slug' ); will echo the SVG
<use> code for the sprite with an ID, or post slug, of “some-slug”. If you tag an image with a different sprite group than the default “general” one, you access those by calling
the_aqua_svg( 'some-slug', 'some-group' );.
Full PHP usage options are as follows:
<?php get_aqua_svg( string $slug, string $sprite = 'general', array $attr( 'attribute' => 'value' ) ) ?>
<?php // grab the "twitter-icon" SVG from the "social-icons" group with a couple properties $attr = array( 'viewbox' => '0 0 1000 1000', 'fill' => 'aquamarine' ); $svg_string = get_aqua_svg( 'twitter-icon', 'social-icons', $attr ); // echo it manually echo $svg_string; // essentially outputs the following (simplified a bit for brevity): // <svg viewbox="0 0 1000 1000" fill="aquamarine"> // <use xlink:href="http://example.com/wp-content/uploads/aqua-svg-sprite/aqua-svg-social-icons-sprite.svg#twitter-icon"></use> // </svg> ?>
Since Aqua SVG Sprite treats images as a custom post type, it integrates well with plugins like the amazing Advanced Custom Fields. In particular, you can allow your users to select SVG icons from your sprite using the Relationship field, and since Aqua SVG Sprite’s images are set as the featured image, you can even check Featured Image under “Elements: Selected elements will be displayed in each result” to show previews of each individual SVG image from the sprite. Further, you can restrict selections to a particular sprite group since they’re treated as tags.