Многие владельцы сайтов на WordPress замечают, что на их страницах загружаются скрипты и стили, связанные с Emoji. Это происходит потому, что WordPress по умолчанию добавляет поддержку Emoji для обеспечения совместимости с различными браузерами и устройствами. Однако на практике эти скрипты увеличивают время загрузки страницы и влияют на производительность, особенно на мобильных устройствах. В этой статье мы подробно разберём, как отключить Emoji в WordPress без использования сторонних плагинов, что особенно актуально для сайтов с ограниченными ресурсами.
Почему стоит отключать Emoji в WordPress
Emoji в WordPress подключаются через дополнительные файлы JavaScript и CSS. Это приводит к дополнительным HTTP-запросам и увеличению объёма передаваемых данных — даже если на сайте Emoji не используются. Особенно это заметно на мобильных устройствах, где скорость интернета может быть ограничена.
Удаление поддержки Emoji позволяет:
- Уменьшить количество HTTP-запросов
- Сократить объём загружаемых данных
- Повысить скорость загрузки страниц
- Снизить нагрузку на сервер и клиент
Таким образом, отключение Emoji — простой и эффективный способ оптимизации производительности сайта.
Как отключить Emoji в WordPress без плагинов: пошаговое руководство
Для отключения Emoji достаточно добавить несколько строк кода в файл functions.php вашей темы или в отдельный плагин для кастомных функций.
Шаг 1. Отключаем загрузку скриптов и стилей Emoji
WordPress добавляет Emoji через следующие хуки:
print_emoji_detection_script— скрипт для детекции Emoji;print_emoji_styles— стили для Emoji.
Чтобы отключить их, используйте следующий код:
function wpmobile_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');
}
add_action('init', 'wpmobile_disable_emojis');
Шаг 2. Отключаем фильтры, обрабатывающие Emoji в контенте
WordPress автоматически заменяет текстовые коды Emoji на изображения через фильтры:
the_contentthe_excerptcomment_text
Чтобы отключить эту замену, добавьте следующий код:
function wpmobile_disable_emojis_remove_filters() {
remove_filter('the_content', 'wp_staticize_emoji');
remove_filter('the_excerpt', 'wp_staticize_emoji');
remove_filter('comment_text', 'wp_staticize_emoji');
}
add_action('init', 'wpmobile_disable_emojis_remove_filters');
Шаг 3. Отключаем DNS-prefetch для Emoji
WordPress добавляет в <head> браузеру подсказку о предварительном разрешении домена для Emoji:
<link rel="dns-prefetch" href="//s.w.org">
Чтобы убрать этот тег, используйте следующий код:
function wpmobile_disable_emojis_remove_dns_prefetch($urls, $relation_type) {
if ('dns-prefetch' == $relation_type) {
$key = array_search('//s.w.org', $urls);
if (false !== $key) {
unset($urls[$key]);
}
}
return $urls;
}
add_filter('wp_resource_hints', 'wpmobile_disable_emojis_remove_dns_prefetch', 10, 2);
Проверяем результат и дополнительные советы
После добавления кода очистите кэш браузера и кэш сайта (если используете кэширование). Откройте исходный код страницы и убедитесь, что скрипты и стили Emoji не подключаются, а тег dns-prefetch отсутствует.
Если вы используете CDN или другие оптимизаторы, убедитесь, что они не добавляют Emoji-ресурсы повторно.
Также можно дополнительно удалить поддержку Emoji в админке, если она не нужна:
function wpmobile_disable_emojis_admin() {
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('admin_print_styles', 'print_emoji_styles');
}
add_action('admin_init', 'wpmobile_disable_emojis_admin');
Альтернатива: отключение Emoji через плагин
Если вы не хотите редактировать код, можно установить плагин Disable Emojis. Он автоматически выполнит все необходимые действия. Однако, для оптимизации и контроля рекомендуется использовать ручное решение, описанное выше.
Заключение
Отключение Emoji в WordPress без плагинов — простой способ снизить нагрузку на сайт и ускорить загрузку страниц, особенно на мобильных устройствах. Представленные функции легко интегрируются в тему или кастомный плагин и не требуют сложных настроек. Это решение отлично подходит для сайтов, где поддержка Emoji не является критичной.