Как отключить emoji в WordPress

Опубликовано: 23.08.2018

видео Как отключить emoji в WordPress

Disable Emojis удалить смайлики emojis из исходного кода

Пару лет назад я рассказывал об интересном плагине эмодзи для вордпресс , который позволял добавить в админку поддержку данных смайликов. После установки модуля WP Emoji One в текстовом редакторе появлялось много интересных иконок для украшения статей блога. Спустя некоторое время разработчики WordPress 4.2 решили упростить всем жизнь и интегрировали эмозди в ярдо системы.



Возможно, они и руководствовались благими намерениями, только вот задумка получилось слегка поспешной. Я бы не сказал, что это насколько важная и актуальная функция чтобы автоматически добавлять ее всем пользователям. Поэтому не удивительно, что вопрос как отключить emoji возникает у многих.


SEOподготовка. Часть 7. Неочевидные вещи: редиректы для картинок, отключение емодзи, rest api и др

В вордпресс header и так перегружен множеством лишних скриптов, не хватало тут еще эмозди. Вместе со всеми стандартными элементами в HEAD сайта грузится скрипт wp-emoji-release.min.js + стили. Если вы не планируете использовать данную функцию в работе, имеет смысл отключить эмодзи.


Как удалить Wp json и oEmbed коды на сайте WordPress

Существует 2 метода решения задачи — через файл функций и с помощью плагина.

Хак отключения Emoji

Чтобы удалить эмодзи из HEAD вам нужно:

Зайти в раздел админки «Внешний вид» — «Редактор». Открыть для редактирования файл functions.php. Добавляете в код следующие строки:
remove_action ( 'wp_head' , 'print_emoji_detection_script' , 7 ) ; remove_action ( 'wp_print_styles' , 'print_emoji_styles' ) ;

remove_action('wp_head', 'print_emoji_detection_script', 7); remove_action('wp_print_styles', 'print_emoji_styles');

Сохраняете файл и проверяете наличие скрипта в исходниках веб-страницы сайта. Его там, разумеется, быть не должно.

Альтернативный вариант

Кстати, в сети я встречал несколько иной вариант . Он более громоздкий и содержит куда больше строк кода. Я так понимаю решение позволяет отключить emoji в wordpress админке, а не только на сайте. В частности функция disable_emojicons_tinymce убирает поддержку смайликов из редактора TinyMCE.

function disable_wp_emojicons ( ) { // all actions related to emojis remove_action ( 'admin_print_styles' , 'print_emoji_styles' ) ; 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_filter ( 'wp_mail' , 'wp_staticize_emoji_for_email' ) ; remove_filter ( 'the_content_feed' , 'wp_staticize_emoji' ) ; remove_filter ( 'comment_text_rss' , 'wp_staticize_emoji' ) ; // filter to remove TinyMCE emojis add_filter ( 'tiny_mce_plugins' , 'disable_emojicons_tinymce' ) ; } add_action ( 'init' , 'disable_wp_emojicons' ) ; function disable_emojicons_tinymce ( $plugins ) { if ( is_array ( $plugins ) ) { return array_diff ( $plugins , array ( 'wpemoji' ) ) ; } else { return array ( ) ; } }

function disable_wp_emojicons() { // all actions related to emojis remove_action( 'admin_print_styles', 'print_emoji_styles' ); 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_filter( 'wp_mail', 'wp_staticize_emoji_for_email' ); remove_filter( 'the_content_feed', 'wp_staticize_emoji' ); remove_filter( 'comment_text_rss', 'wp_staticize_emoji' ); // filter to remove TinyMCE emojis add_filter( 'tiny_mce_plugins', 'disable_emojicons_tinymce' ); } add_action( 'init', 'disable_wp_emojicons' ); function disable_emojicons_tinymce( $plugins ) { if ( is_array( $plugins ) ) { return array_diff( $plugins, array( 'wpemoji' ) ); } else { return array(); } }

Обновление 9.07.2017 : В комментах ниже заметили, что нужно также удалить вызов эмодзи в DNS настройках. Для этого можно попробовать фильтр:

add_filter ( 'emoji_svg_url' , '__return_false' ) ;

add_filter( 'emoji_svg_url', '__return_false' );

Или используйте код Дмитрия из комментариев:

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 ; }

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; }

Но не забудьте при этом сделать вызов самой функции:

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

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

Добавляете весь код аналогично в functions.php. После внедрения получится будто бы функциональность Emoji никогда в ядро и не добавлялась:) Кстати, данный вариант решения также реализуется и через специальный плагин, речь о котором пойдет ниже.

Disable Emojis

Тем, кому сложно или страшно делать правки в файлах шаблона, советуем просто воспользоваться готовым модулем.

Скачать Disable Emojis можно тут либо установить через админку. Плагин работает сразу после установки и не содержит никаких настроек. Преимущество этого метода в том, что при смене шаблона вам не придется заново вносить правки в functions.php.

Кстати, интересный комментарий в описании модуля от разработчика. Он утверждает, что даже после отключения Emoji они все равно будут работать в тех браузерах, что имеют встроенную поддержку функции. Модуль же просто позволяет убрать emoji код из wordpress, который используется для поддержки старых браузеров.

Если же вы захотите заменить эмодзи на обычные «рожицы», то используйте разные плагины смайликов о которых я рассказывал ранее.

Что вообще думаете про идею отключить emoji в WordPress? Уже реализовали это в своем блоге? Я для одного проекта под заказ уже успел их убрать.

IRC (Internet Relay Chat)
rss