Si eres desarrollador de páginas web que trabaja habitualmente con WordPress ya sabrás que en un momento determinado se incorporó la librería de emojis para poder usar los iconos dentro del portal. Esta librería se carga tanto en el frontend como en el backend y añade a la experiencia de escritura un extra de cercanía.
No obstante, a fin de cuenta se trata de una carga de recursos que quizá no nos interese tener ya que puede afectar negativamente al rendimiento en según qué condiciones. Como WordPress no nos da una opción de deshabilitar los emojis desde el panel de control, se me ha ocurrido que podría ser buena idea compartir un pequeño script que nos facilita la tarea.
Sin extenderme demasiado, básicamente la idea es primero eliminar el soporte para los emojis en toda la plataforma, después eliminarlos también en el editor de texto clásico TinyMCE y por último eliminamos también la conexión al CDN. Con estas tres áreas habremos cumplido nuestro cometido.
Para implementarlo, abrimos el archivo de funciones de nuestro tema y añadimos lo siguiente:
/**
* Desactivar los emojis de 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' );
/**
* Función de filtro utilizada para eliminar el plugin de emojis de TinyMCE.
*
* @param array $plugins Lista de plugins de TinyMCE.
* @return array Diferencia entre los dos arrays.
*/
function disable_emojis_tinymce( $plugins ) {
if ( is_array( $plugins ) ) {
return array_diff( $plugins, array( 'wpemoji' ) );
} else {
return array();
}
}
/**
* Eliminar el hostname del CDN de emojis de las sugerencias de prefetch DNS.
*
* @param array $urls URLs que se imprimirán como sugerencias de recursos.
* @param string $relation_type Tipo de relación para el que se imprimen las URLs.
* @return array Diferencia entre los dos arrays.
*/
function disable_emojis_remove_dns_prefetch( $urls, $relation_type ) {
if ( 'dns-prefetch' == $relation_type ) {
/** Este filtro está documentado en 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;
}






Deja una respuesta