Come disabilitare le emoji di WordPress

Come disabilitare le emoji da Wordpress

Sin dalla versione 4.2, WordPress ha introdotto il supporto per le emoji, le famose faccine che quotidianamente utilizziamo nei nostri messagi di chat. Questa funzione ha tuttavia comportato l’aggiunta di una chiamata HTTP alla libreria wp-emoji-release.min.js. Se pur di soli 10.5 KB, la sua rimozione è considerata necessaria in un’ottica di ottimizzazione delle prestazioni del vostro sito web WordPress.

Vediamo dunque come rimuovere la chiamata alla libreria. Esistono due metodi:

  1. Disabilitare le emoji di WordPress tramite un plugin
  2. Disabilitare le emoji di WordPress tramite codice

1. Disabilitare le emoji di WordPress tramite un plugin

Disabilitare le Emojis di WordPress

Se non volete sporcarvi le mani con il codice, vi basterà installare il plugin Disable Emojis di Ryan Hellyer. Attivatelo et voilà, il gioco è fatto: controllate pure nell’ <head> della vostra pagina come la chiamata alla libreria wp-emoji-release.min.js sia stata rimossa.

Emoji Settings

Esiste anche un’alternativa per le versioni WordPress Multisite, ed è rappresentata da Emoji Settings, un plugin che permette di deselezionare le singole emoji nei vari sotto siti.

2. Disabilitare le emoji di WordPress tramite codice

Per chi invece non volesse installare l’ennesimo plugin, esiste un’alternativa pulita ed efficace. Aprite il file functions.php del vostro tema attivo, ed aggiungete le seguenti righe di codice:

/**
 * Codice per disabilitare il caricamento della libreria Emoji in WordPress.
 */
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' );

/**
 * Funzione di filtro per rimuovere il plugin per le emoji all'interno di TinyMCE.
 * 
 * @param array $plugins 
 * @return array La differenza fra i due arrays.
 */
function disable_emojis_tinymce($plugins)
{
    if ( is_array( $plugins ) ) {
        return array_diff( $plugins, array( 'wpemoji' ) );
    }
    else return array();
}

/**
 * Rimozione dell'hostname CDN dai DNS prefetch di WordPress.
 *
 * @param array $urls Le URL delle sorgenti.
 * @param string $relation_type Il tipo di relazione delle URL utilizzate.
 * @return array La differenza fra i due 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;
}

Questo codice è anche presente come snippet su Github.