JVM Gutenberg Rich Text Icons

Plugin Banner

JVM Gutenberg Rich Text Icons

by Joris van Montfort

Download
Description

A plugin / toolset for anyone wanting to integrate (SVG) icons into the Gutenberg editor or options created with Advanced Custom Fields.

Add inline icons to rich text fields like: paragraphs, headings, lists or buttons anywhere in the WordPress block editor, or add a dedicated icon block from within the Gutenberg editor.

This plugin ships with the free Font Awesome icon set as default icon set. You can choose between version 4.x, 5.x and version 6.x.
The dedicated icon block contains several styling options to customize the icon in the icon block.
The plugin also provides an easy to use interface for creating a custom icon set based on SVG icons. Custom icons can be uploaded from the plugin settings using an easy to use drag & drop uploader.

For users of Advanced Custom Fields (ACF) the plugin also creates a new field type: JVM Icon. This allows you to create custom fields that work with a the font awsome icon or any custom created icon set.

If font awesome or the built in custom icon set configurator do not meet your needs you can also create your own custom icon set and load it using hooks provided by the plugin.

The plugin simply inserts icons in the following HTML format:

<i class="icon fa fa-address-book" aria-hidden="true"> </i>

The CSS class names and available icons can be all be modified to your liking if you are prepared to write some PHP hooks for your WordPress theme. Please note that you should keep the plugin settings set to use ‘Font Awesome 4.7’.
If you would like to load a custom created webfont or icon set you crafted yourself please read on. If you have the SVG files you can set the plugin settings to ‘Custom SVG icon set’ and upload your SVG files from the plugin settings.

CSS file
A slightly customized version of the Font Awesome 4.7 CSS file is loaded by default on the front end and backend to make the plugin work out of the box, but you can also choose Font Awesome Free version 5.x or 6.x from the settings screen.
If you want to use a custom created icon set it is advised to overide the icon set json file and CSS file using hooks provided by this plugin.

Custom icon set file
If the plugin is set to Font Awesome 4.7 icon set (default behaviour) the icons are loaded from: wp-content/plugins/jvm-richtext-insert-icons/dist/fa-4.7/icons.json. The json file contains all css classes that can be turned into icons by Font Awesome 4.7 CSS file. You can load a custom json icon set file by calling a filter hook in your (child) theme functions.php.
For example:

function add_my_icons($file) {
    $file = get_stylesheet_directory().'/path_to_my/icons.json';
    return $file;
}

add_filter( 'jvm_richtext_icons_iconset_file', 'add_my_icons');

The icon config file can also be in fontello format since version 1.0.3. Have a look at: https://fontello.com to create your customized icon set.

Custom CSS file
By default the Font Awesome 4.7 CSS is loaded from: wp-content/plugins/jvm-richtext-insert-icons/dist/fa-4.7/font-awesome.min.css. You can load a custom CSS file for your icon set by calling a filter hook in your (child) theme functions.php.
For example:

function add_my_css($cssfile) {
    $cssfile = get_stylesheet_directory_uri().'/path_to_my/cssfile.css';
    return $cssfile;
}

add_filter( 'jvm_richtext_icons_css_file', 'add_my_css');

If you choose the load your own CSS file and want to disable the default CSS file use the following code:

add_filter( 'jvm_richtext_icons_css_file', '__return_false');

All icon markup has the classname “icon” prefixed to the icon HTML inserted. If you want to use some other prefix you can add a filter. Like this:

function my_icon_class($css_class_name) {
    return 'my-custom-css-class-name';
}

add_filter( 'jvm_richtext_icons_base_class', 'my_icon_class');

Use this hook to disable the entire plugin settings screen that was added in 1.0.9:

add_filter('jvm_richtext_icons_show_settings', '__return_false');

Please note that settings will still be loaded so please make sure you have set the settings to default font awesome if you are loading a custom icon set with the plugin hooks.

Deprecated: Creation of dynamic property

By WPO (IvanPr) on November 9, 2025

If you see:
Deprecated: Creation of dynamic property JVM_acf_field_jvm_rich_text_icons::$settings is deprecated in /wp-content/plugins/jvm-rich-text-icons/src/fields/class-jvm_acf_jvm_rich_text_icons5.php on line 55

To temp-fix it, edit:
/wp-content/plugins/jvm-rich-text-icons/src/fields/class-jvm_acf_jvm_rich_text_icons5.php

Find:
class JVM_acf_field_jvm_rich_text_icons extends acf_field {

Change it to:

class JVM_acf_field_jvm_rich_text_icons extends acf_field {

public $settings; // add this line


The issue happens because PHP 8.2+ no longer allows creating dynamic properties on objects that don’t explicitly declare them. The plugin jvm-rich-text-icons is trying to assign a property $settings to an object that doesn’t declare it in the class. This isn’t immediately fatal, but it’s deprecated and will cause issues in future PHP versions.

Very handy solution

By Cyril Seguenot (cseguenot) on March 1, 2024

I love this very ergonomic and very quick solution for inserting icons in buttons and titles for example. In addition, it is compatible with the site editor (FSE)

great gutenberg addon

By Jules Colle on November 7, 2022

I can imagine something like this becoming part of core. Very well developed essential addon for the block editor

Perfect!

By zaphodbeeblebrox01 on February 18, 2022

Just what I was looking for – you saved me hours of work! I was just wondering why you decided to include FA4 instead of a newer version (they are also free and have a ton more icons) Still, great work

Working as intended

By humanify on December 7, 2021

Does what it should do, and nothing more (and that is what we want from good plugins). It comes with some filters that are handy for those who don't want to load FA assets or add BS icons or w/e.

Excellent

By Gordon168 (gordon168) on September 16, 2021

New usage of Icon font

Works great!

By nelsonamaya on September 16, 2021

It works really well, and it's very flexible. I wish it had a dedicated block as an additional option for those cases where we just one to add an icon without depending on any other blocks (like Paragraph). Still, it does its job, so it's a 5-stars.

Many thanks!

By GwenetteWriter on May 14, 2021

This is exactly what I needed to bring the reader's eye to a text paragraph inviting them to follow us on a few socmed platforms. The inserted icons are subtle, but effective... and responsive!

Incredible and Highly Extensible

By Gaurav Tiwari (gauravtiwari) on March 25, 2021

Thank you so much for the plugin, Joris! I am using a modded version of this plugin to insert a custom icon pack that I created. It was so easy to configure. You have my utmost respect for this amazing plugin.

Does one job, and does it well.

By nick6352683 on March 25, 2021

Even though the plugin could not be activated due to a syntax error (which I fixed it - to be more accurate - bypassed it), it eliminates the need for me to create a similar block with ACF Pro for my projects, so thank you for this plugin.

1.3.6

Font awesome 5.x and 6.x have been updated and are now loaded from a source within the plugin. This also fixes a bug where Font Awesome icons did not display in the block pattern / full site editor.

1.3.4

Php deprecation warning fixed.

1.3.3

Added a fix for CSS in the full site editor and block editor when using custom icons.

1.3.2

Added a font-size (pixels) option for single icon block.

1.3.1

Added color options for single icon block.

1.3.0

Added alignment and spacing options for single icon block.

1.2.9

Added an option for rendering technology for custom icons sets. You can now also choose rendering with a ::before or ::after pseudo element instead of the regular HTML / CSS. This allows for more CSS flexibility. For example adding backgrounds or hover effects.

1.2.8

Update to re-enable icons in ACF select2 field. Icons apeared as literal HTML after an update of the ACF plugin.

1.2.7

Security update. File name now sanitize in delete icon ajax call.

1.2.6

Security update. Fixed a vulnerabilities in plugin settings upload and delete icon options.

1.2.3

Fixed the thick border around the toolbar button by using the correct toolbar button markup.

1.2.2

Bugfix WordPress 6.2 site editor rich text blocks not editable.

1.2.1

Bugfix for the single icon block using incomplete css classes.

1.2.0

Added a dedicated single icon block for Gutenberg.

1.1.9

Fixed some deprecation errors to get this plugin compatible with the site editor and future WordPress versions. Some work is still needed on this.

1.1.8

Got rid of position relative for custom icon sets.

1.1.7

Fixed editor dialog position on smaller screens.

1.1.5

Font Awesome 4.7 webfont URL’s fixed.

1.1.4

Now also load in the site editor. Not all block however.

1.1.3

Fixed a deprecated warning in php 8.1.

1.1.2

Added Font Awesome Free 5.15.4 and Font Awesome Free 6.2.0 to the settings. The CSS for these verions are loaded from a CDN. Font Awesome version 4.7 is still the default.

1.1.1

Added a notice on the settings screen if a custom icon set is loaded and the SVG icon set is selected. These options won’t work together.

1.1.0

Added a hook to disable the plugin settings page altogether for those who like a clean WordPress admin.

Use this in your functions.php to disable the settings screen that was added in 1.0.9:
add_filter(‘jvm_richtext_icons_show_settings’, ‘__return_false’);

1.0.9

Added a plugin settings screen and a nice interface to upload and create a custom SVG file based icon set. If you like this feature please consinder donating: https://www.paypal.com/donate/?hosted_button_id=VXZJG9GC34JJU

1.0.8

Fixed some WordPress coding convenstions and tested and fixed some minor issues for WordPress 6.0.

1.0.7

Fixed the styling of the editor pop-over. It was to large since WordPress 5.9.

1.0.6

The addon is now also loaded in the widget screen (widget.php)

1.0.5

Added a hook for modifying the editor javascript file loaded for advanced users.
Example usage:

function add_my_js_file($file) {
    $file = '/path_to_my/js_file.js';
    return $file;
}

add_filter( 'jvm_richtext_icons_editor_js_file', 'add_my_js_file');

1.0.4

Bug fix: Replaced the deprecated block_editor_settings hook by the new block_editor_settings_all hook. This fixes a deprecated notice.

1.0.3

New feature: ACF field for the JVM icon set loaded.
New feature: Font icon config file can now also ben in fontello format

1.0.2

Bugfix: Changed backend asset loading to load only on new posts and edit post pages. In version 1.0.1 scripts for this plugin loaded on all backend pages and kept breaking the widget text editor.

1.0.1

Php error fix for some php versions on plugin activation.

1.0.0

Initial release

Stable

1.0.0

Back to top