Как отключить emoji в WordPress
Пару лет назад я рассказывал об интересном плагине эмодзи для вордпресс, который позволял добавить в админку поддержку данных смайликов. После установки модуля WP Emoji One в текстовом редакторе появлялось много интересных иконок для украшения статей блога. Спустя некоторое время разработчики WordPress 4.2 решили упростить всем жизнь и интегрировали эмозди в ярдо системы.
Возможно, они и руководствовались благими намерениями, только вот задумка получилось слегка поспешной. Я бы не сказал, что это насколько важная и актуальная функция чтобы автоматически добавлять ее всем пользователям. Поэтому не удивительно, что вопрос как отключить emoji возникает у многих.
В вордпресс header и так перегружен множеством лишних скриптов, не хватало тут еще эмозди. Вместе со всеми стандартными элементами в HEAD сайта грузится скрипт wp-emoji-release.min.js + стили. Если вы не планируете использовать данную функцию в работе, имеет смысл отключить эмодзи.
Существует 2 метода решения задачи — через файл функций и с помощью плагина.
Хак отключения Emoji
Чтобы удалить эмодзи из HEAD вам нужно:
- Зайти в раздел админки «Внешний вид» — «Редактор».
- Открыть для редактирования файл functions.php.
- Добавляете в код следующие строки:
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(); } } |
Обновление 9.07.2017: В комментах ниже заметили, что нужно также удалить вызов эмодзи в DNS настройках. Для этого можно попробовать фильтр:
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; } |
Но не забудьте при этом сделать вызов самой функции:
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? Уже реализовали это в своем блоге? Я для одного проекта под заказ уже успел их убрать.
комментариев 10 к статье “Как отключить emoji в WordPress”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Як сховати відсутні товари в Woocommerce шорткодах та схожих товарах
- Сервіс AdMaven + плагін для монетизації трафіка на WordPress сайтах
- Плагіни для створення стрічки новин з біжучим рядком в WordPress
- Як змінити розміщення кнопки оформлення замовлення в WooCommerce
- Плагін WHWS Display In Stock Products First – відображення товарів в наявності першими
- Підписка MonsterONE: чи варто використовувати цей сервіс у 2023 році? (+5 продуктів, які треба скачати в першу чергу)
- Онлайн генератор ссылок на мессенджеры для WordPress и не только
- WooCommerce (46)
- Безопасность (12)
- Видео (6)
- Виджеты (28)
- Возможности (141)
- Вопрос-ответ (6)
- Начинающим (52)
- Новости (46)
- Оптимизация (23)
- Плагины (246)
- Сервисы (87)
- Хаки и секреты (87)
- Шаблоны (45)
- Плагин WP-PostRatings рейтинга постов в WordPress (5,79 из 7, голосов - 934)
- Оптимизируем WordPress header и удаляем лишний код (5,19 из 7, голосов - 43)
- Кэширование в wordpress — выбираем лучший плагин для кэширования (5,63 из 7, голосов - 35)
- Плагин WP01 расскажет как ускорить и оптимизировать сайт на WordPress (4,48 из 7, голосов - 31)
- Оптимизация и ускорение Elementor – как убрать лишние стили и шрифты (3,58 из 7, голосов - 36)
- WP-Optimize — плагин для оптимизации базы данных в WordPress (4,58 из 7, голосов - 24)
- Плагины кэширования Hyper Cache + DB Cache Reloaded Fix для wordpress (5,41 из 7, голосов - 17)
- Дизайн Мания - о веб-дизайне и не только.
- Tod's Blog - все про заработок онлайн.
- Вебдванольные заметки - обзоры веб-сервисов.
- Советы по выбору холодильника LG с технологией No Frost
- Зачем нужны Wi-Fi ретрансляторы и как выбрать подходящую модель
- Введение в онлайн-казино Slotor777: многообразие игр и привлекательные бонусы
- Необходимость использования облачного хранилища в наше время, что важно и как выгодно?
- Спрощення процесу звітності за допомогою програми BAS Бухгалтерія
- Технологія підключення інтернету GPON та її переваги
- За що гравці найбільше цінують Lineage 2
- Для каких проектов нужна аренда виртуального сервера и что такое VPS
Спасибо очень полезно и интересно! С уважением, Валерий Бородин!!!
Валерий, я ваши комментарии наблюдаю почти на всех блогах, которые я читаю. Уже прям надоели))))
2wordpress, продвижение через комментарии еще никто не не отменял, вы ведь тоже не используете имя в соответствующем поле, а пишете название сайта)) Главное чтобы не откровенный спам был, ссылки на блоги я оставляю.
Не знаю, чем мои комментарии 2wordpress надоели? Но я все же посмотрел его блог и подписался на него, теперь буду и его комментировать. Если он конечно не против?! :)
PS: Комментировать стараюсь по существу и ни кого не обижать. Так, что если вам не нравиться, то пишите об этом сразу. Спасибо!
Здравствуйте. В данном посте используются не все фильтры. Еще нужно отключать подгрузку картинок с CDN. Надо бы добавить в пост. Сам плагин недавно обновился, в нем прописана функция.
Remove emoji CDN hostname from DNS prefetching hints. Можно разобрать плагин и глянуть. Вот она
/**
* 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.2.1/svg/' );
$urls = array_diff( $urls, array( $emoji_svg_url ) );
}
return $urls;
}
Дмитрий, спасибо за дополнение, после отпуска рассмотрю детальнее, потестирую и дополню статью.
Дмитрий, разобрался с этим DNS prefetching hints более детально. Оказывается в альтернативном варианте, на который я ссылался в статье, также появилось обновление кода, но там предлагается все сделать через фильтр emoji_svg_url. Этот метод покороче, но я лично его не тестировал. Что касается функции disable_emojis_remove_dns_prefetch, то ее мало просто добавить в шаблон, нужно будет еще создать фильтр для вызова.
Добрый день! Отключил Emoji этим кодом:
//start:отключение Emoji
remove_action( ‘wp_head’, ‘print_emoji_detection_script’, 7 ); //на сайте
remove_action( ‘wp_print_styles’, ‘print_emoji_styles’ ); //на сайте
remove_action( ‘admin_print_scripts’, ‘print_emoji_detection_script’ ); //в админке
remove_action( ‘admin_print_styles’, ‘print_emoji_styles’ ); //в админке
//end:отключение Emoji
Но dns-prefetch’ s.w.org в коде видно было подгружались. Добавил к коду выше вашу строку:
add_filter( ’emoji_svg_url’, ‘__return_false’ );
И в коде пропала подгрузка и dns-prefetch’ s.w.org. Спасибо вам
Эту строку не добавлял:
add_filter( ‘wp_resource_hints’, ‘disable_emojis_remove_dns_prefetch’, 10, 2 )
Не уверен нужно ли ее все же добавлять и зачем, если не видно в коде подгрузки dns-prefetch’ s.w.org
А куда строки добавить в functions.php? Я так понял их в самый низ можно?
Евгений, да, можно в самый низ. Главное смотрите чтобы файл был правильно закрыт и не оказалось там никаких лишних скобок. Можете для наджености сохранить прошлую версию файла, а потом, если что, восстановить.