Emoji — это маленькие иконки, которые WordPress автоматически добавляет для поддержки смайликов на сайте. Хотя это удобно, для многих проектов Emoji создают лишние HTTP-запросы и замедляют загрузку страниц, особенно когда они не нужны. В этой статье разберём, как грамотно отключить Emoji в WordPress, чтобы оптимизировать производительность сайта.
Почему стоит отключать Emoji в WordPress
По умолчанию WordPress добавляет скрипт и стили для Emoji, которые загружаются на фронтенд и в админку. Это приводит к нескольким недостаткам:
- Дополнительные HTTP-запросы на загрузку JavaScript и CSS.
- Увеличение размера страницы и времени отклика.
- Потенциальные конфликты с другими скриптами и плагинами.
Если ваш сайт не использует Emoji или вы не хотите их отображать, имеет смысл полностью отключить эту функциональность.
Отключение Emoji через functions.php: простой и надёжный способ
Самый распространённый способ — добавить код в файл functions.php вашей темы или в плагин для кастомных функций. Ниже приведён пример функции wpsetup_disable_emojis, которая отключит Emoji во всех местах:
function wpsetup_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', 'wpsetup_disable_emojis_tinymce');
add_filter('wp_resource_hints', 'wpsetup_disable_emojis_remove_dns_prefetch', 10, 2);
}
add_action('init', 'wpsetup_disable_emojis');
function wpsetup_disable_emojis_tinymce($plugins) {
if (is_array($plugins)) {
return array_diff($plugins, array('wpemoji'));
}
return array();
}
function wpsetup_disable_emojis_remove_dns_prefetch($urls, $relation_type) {
if ('dns-prefetch' === $relation_type) {
$emoji_svg_url = 'https://s.w.org/images/core/emoji/';
foreach ($urls as $key => $url) {
if (strpos($url, $emoji_svg_url) !== false) {
unset($urls[$key]);
}
}
}
return $urls;
}Этот код полностью отключит загрузку скриптов и стилей Emoji, уберёт поддержку в визуальном редакторе TinyMCE и удалит DNS-prefetch для emoji-серверов.
Отключение Emoji с помощью плагинов
Если вы предпочитаете не трогать код, можно использовать готовые плагины. Вот несколько популярных решений:
- Disable Emojis (GDPR friendly) — простой и лёгкий плагин, который отключает Emoji и не нагружает сайт.
- Clearfy Pro
Для установки плагина зайдите в админку WordPress, выберите Плагины > Добавить новый, найдите плагин по названию и нажмите «Установить» и «Активировать».
Дополнительные советы по оптимизации после отключения Emoji
После отключения Emoji рекомендуется проверить скорость сайта, чтобы убедиться в улучшении. Можно использовать сервисы:
- Google PageSpeed Insights
- GTmetrix
- Pingdom
Если вы хотите пойти дальше, рекомендую настроить кэширование и минимизацию скриптов, например, с помощью плагина Clearfy Pro, который также позволяет отключать неиспользуемые функции WordPress.
Пример: отключение Emojis и других ненужных скриптов
Вы можете расширить нашу функцию для отключения и других скриптов, например, Embeds:
function wpsetup_disable_emojis_and_embeds() {
// Отключаем Emoji
wpsetup_disable_emojis();
// Отключаем Embeds
remove_action('wp_head', 'wp_oembed_add_discovery_links');
remove_action('wp_head', 'wp_oembed_add_host_js');
add_filter('embed_oembed_discover', '__return_false');
remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);
remove_action('rest_api_init', 'wp_oembed_register_route');
add_filter('rest_enabled', '__return_false');
add_filter('rest_jsonp_enabled', '__return_false');
// Удаляем поддержку oEmbed в TinyMCE
add_filter('tiny_mce_plugins', function($plugins) {
return array_diff($plugins, array('wpembed'));
});
}
add_action('init', 'wpsetup_disable_emojis_and_embeds');Это позволит ещё больше снизить нагрузку от неиспользуемых функций.