После установки WordPress мы обязательно обнаружим в коде страницы различные ссылки и скрипты, которые автоматом добавляет движок. В этой статье мы разберем для чего используется этот дополнительный код, который для нас, в большинстве случаев, оказывается «мусором», а также рассмотрим, как от него избавиться, воспользовавшись API WordPress.
Разбираться мы будем на стандартном шаблоне Twenty Seventeen. Начнем по порядку и первое, что мы увидим в этом самом коде страницы:
На 6 строке ссылка, но profile – она нас не интересует, так как она вручную прописана в шаблоне, а вот на 10 и 11 строках код уже сам движок генерирует. Давайте поподробнее разберёмся с ним.
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='dns-prefetch' href='//s.w.org' />
Появился этот кусок кода версии WordPress 4.6.1, основная его задача, по словам разработчиков, – это общие улучшение загрузки сайта, а именно - медийной части, но здесь есть один нюанс, а действительно ли нужен лишний запрос, чтобы упорядочить другие? В общем - замкнутый круг. Но в большинстве случаев нет! Как же отключить или удалить эти ссылки? Откроем functions.php (далее в этой статье будим с ним работать) и добавим:
remove_action('wp_head', 'wp_resource_hints', 2);
В этой строчке мы удаляем функцию wp_resource_hints(), прикреплённую к хуку (событию) wp_head. После ссылок в коде уже не будет.
Двигаемся дальше и видим JavaScript и CSS Emoji. Это набор иконок и смайлов реализованных уже самим WordPress при помощи библиотеки Twemoji от Twitter. Они подтягиваются с внешнего сервера wordpress.org и в большинстве случаев не используются, так как есть много хороших альтернатив.
Для удаления нам потребуется определённый набор действий: удаление функций привязанных к событиям и фильтров.
add_action('init', 'disable_emojis');
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', 'tiny_mce_plugins_disable_emojis');
return false;
}
function tiny_mce_plugins_disable_emojis($plugins){
if(is_array($plugins)){
return array_diff($plugins, array('wpemoji'));
}
return array();
}
И, напоследок, разберемся с такими ссылками: wlwmanifest, canonical, shortlink и мета тегом generator.
Первая ссылка нужна для клиента Windows Live Writer. Если вы по каким-то причинам им пользуетесь, то Windows Live Writer можно настроит для добавления и изменения статей WordPress, но я думаю, подавляющая масса пользователей, как и я, работает в основном через админку, поэтому для удаления этой ссылки добавляем код:
remove_action('wp_head', 'wlwmanifest_link');
Далее, чтобы разобраться с канонической ссылкой, нам так же потребуется добавить одну строку кода:
remove_action('wp_head', 'rel_canonical');
Shortlink – это ссылка которую генерирует WordPress для каждой страницы и если вы используете постоянные ссылки, то это будет лишний как и код, так и дубль страницы. Для её удаления стоит добавить такой код:
remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0);
remove_action('template_redirect', 'wp_shortlink_header', 11, 0);
Думаю, многим не нравится, когда в коде весит мета тег generator. Показывать явно какой версии движок не особо хорошая тенденция, хотя некоторые блоггеры пишут, что это не критично, но зачем злоумышленникам облегчать жизнь. Добавив две строки, мы навсегда спрячем этот мета тег.
remove_action('wp_head', 'wp_generator');
add_filter('the_generator', '__return_empty_string');
Вот такими простыми способами вы смогли почистить наш WordPress. Для тех, кто наткнулся на эту статью в поисках оптимизации движка, рекомендую прочесть статью про Bicycles by falbar 2 – это мой плагин у которого в наборе есть много функции как для оптимизации сайта, так для его защиты.