Disable WordPress Emojis

smiley category of emojis
Screenshot of smiley emoji's, captured from getemoji.com

WordPress's ability to allow the use of emojis is awesome, but what if you are not using them on your site? The following long snippet allows you to turn off this feature. A brief understanding of the basics of what is happening follows the snippet. While there are plugins that offer this with a checkbox, I find one less plugin to manage a good thing. 😀 😛

Disable the emoji's
function disable_emojis() {

    remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
    remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
    remove_action( 'wp_print_styles', 'print_emoji_styles' );
    remove_action( 'admin_print_styles', 'print_emoji_styles' );
    remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
    remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
    remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );

    add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
    add_filter( 'wp_resource_hints', 'disable_emojis_remove_dns_prefetch', 10, 2 );


add_action( 'init', 'disable_emojis' );

Filter function used to remove the tinymce emoji plugin.
@param array $plugins
@return array Difference betwen the two arrays
function disable_emojis_tinymce( $plugins ) {

    if ( is_array( $plugins ) ) {
        return array_diff( $plugins, array( 'wpemoji' ) );
    } else {
        return array();


Remove emoji CDN hostname from DNS prefetching hints.
@param array $urls URLs to print for resource hints.
@param string $relation_type The relation type the URLs are printed for.
@return array Difference betwen the two arrays.
function disable_emojis_remove_dns_prefetch( $urls, $relation_type ) {

    if ( 'dns-prefetch' == $relation_type ) {
        /** This filter is documented in wp-includes/formatting.php */
        $emoji_svg_url = apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/2/svg/' );
        $urls = array_diff( $urls, array( $emoji_svg_url ) );
return $urls;


Let's break this down. The first function, disable_emojis, removes actions that are called to add in emojis support. Then it adds filters to allow for the calling of the other two functions. The disable_emojis_tinymce hooks into tiny_mce_plugin function, to remove if necessary emoji support. The disable_emojis_remove_dns_prefetch hooks into the wp_resource_hints function to remove any dns-prefetching for emoji support.

Why Disable Emojis

Simply, most web sites will not actually use emojis. They are difficult to add natively if using the newer Gutenberg Editor, unless you wish to do some copy and pasting. For many sites, there simply is no need for emojis and valuable resources can go wasted.

Plugins which offer this feature

Find more amazing snippets for all your WordPress needs from the main snippet page.