14 способов ускорения WordPress без помощи плагинов

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

Ядро WordPress не тяжелое, но используемые темы могут замедлить общее время загрузки страницы. Существует множество способов ускорить работу вашего сайта WordPress.

Например:

  • Использование CDN (Сети доставки контента)
  • Задействование кеширования браузера и сервера
  • Хостинг на быстром сервере
  • Использование легкой темы

Однако знаете ли вы о том, что в ядре WordPress есть много вещей, которые вам могут не пригодиться? Если их отключить, сайт быстрее откроется, страницы будут меньше весить.

Оптимизацию можно провести двумя способами. Первый — используя разные плагины, второй — добавить несколько строк кода в functions.php.

Я предпочитаю не использовать плагины, если что-то можно сделать с добавлением/модификацией кода в существующем файле.

Важный момент

Обязательно сделайте резервную копию файла, который вы собираетесь изменить. Тогда, если что-то пойдет не так, сможете быстро откатить всё назад.

Приведенный ниже код добавляется в functions.php, если не указано иное.

Удалить строки запроса

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

Чтобы их удалить, используйте следующий код:

function remove_cssjs_ver( $src ) {
if( strpos( $src, '?ver=' ) )
$src = remove_query_arg( 'ver', $src );
return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_ver', 10, 2 );
add_filter( 'script_loader_src', 'remove_cssjs_ver', 10, 2 );

Удалить ссылки RSD

RSD (Really Simple Discovery) нужен, если вы собираетесь использовать клиент XML-RPC, функцию pingback и т. д. Однако, если вам не нужен pingback или вы не управляете сайтом с помощью посторонней программы, удалите заголовок RSD, добавив следующий код:

remove_action( 'wp_head', 'rsd_link' );

Отключить смайлики (Emoticons)

Удалите код, связанный с эмодзи, который был добавлен для поддержки смайликов в старых браузерах.

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' );

Удалить короткие ссылки

Начиная с версии 3, WordPress добавляет короткую ссылку (более короткую ссылку на адрес веб-страницы) в код заголовка. Например:

<link rel='shortlink' href='http://geekflare.com/?p=187' />

Если вы не используете короткие ссылки, можете удалить их, используя код ниже:

remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0);

Отключить встраивание контента с посторонних сайтов

WP, начиная с версии 4.4., реализовала возможности oEmbed для встраивания контента со сторонних сайтов. Выглядит это так:

 

Добавление кода ниже отключит эту функцию и облегчит страницы сайта из-за отключения загрузки соответствующего JS файла.

function disable_embed(){
wp_dequeue_script( 'wp-embed' );
}
add_action( 'wp_footer', 'disable_embed' );

Отключить XML-RPC

Так ли нужно вам использовать WordPress API (XML-RPC) для публикации/редактирования/удаления постов, редактирования/просмотра комментариев, загрузки файлов? Кроме того, включенный XML-RPC может привести к DDoS и брутфорсу паролей.

Если вам это не нужно, отключите XML-RPC, добавив это:

add_filter('xmlrpc_enabled', '__return_false');

Скрыть версию WordPress

Это не помогает улучшить производительность, но зато уменьшает уязвимость сайта. По умолчанию WordPress сообщает в коде и HTTP-заголовке свою версию. Чтобы удалить отображение версии WP, добавьте нижеследующий код:

remove_action( 'wp_head', 'wp_generator' );

Удалить ссылку на WLManifest

Используете ли вы Windows Live Writer? Если нет, удалите лишние ссылки из кода:

remove_action( 'wp_head', 'wlwmanifest_link' );

Удалить JQuery Migrate

WordPress добавила JQuery Migrate с версии 3.6. Эта JS библиотека не нужна, если используете последнюю версию JQuery, а темы и плагины совместимы с ней. Чтобы удалить jquery-migrate.min.js и таким образом облегчить размер страниц, добавьте код:

function deregister_qjuery() {
if ( !is_admin() ) {
wp_deregister_script('jquery');
}
}
add_action('wp_enqueue_scripts', 'deregister_qjuery');

Отключить Self Pingback

С помощью pingback в разделе комментариев появляются ответные ссылки на сайты, где есть ссылки на ваши записи. Хотя некоторым юзерам эта функция нравится, многих она просто раздражает. Если не хотите оставлять обратные ссылки, код ниже вам поможет.

function disable_pingback( &$links ) {
foreach ( $links as $l => $link )
if ( 0 === strpos( $link, get_option( 'home' ) ) )
unset($links[$l]);
}
add_action( 'pre_ping', 'disable_pingback' );

Отключить или ограничить количество резервных копий записей

Резервные копии записей в WordPress используются давно. Они полезны для восстановления сообщения в случае сбоя браузера или потери сети. Но спросите себя, как часто это у вас случается?

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

Добавьте в файл wp-config.php следующее:

Для полного запрета хранить резервные копии:

define('WP_POST_REVISIONS', false);

Для ограничения количества резервных копий, например, до двух максимум на каждый пост:

define('WP_POST_REVISIONS', 2);

Внимание: эта запись должна быть выше строки с ABSPATH, иначе не сработает.

Отключить Heartbeat

WordPress использует heartbeat API для связи браузера с сервером, часто вызывая admin-ajax.php. Это может замедлить общее время загрузки страницы и увеличить нагрузку процессора сервера.

Если вам эта функция не нужна, можете от неё отказаться, добавив следующий код:

add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat() {
wp_deregister_script('heartbeat');
}

Отключить значки Dashicons на страницах сайта

В консоли администратора используются иконки, и если вы не используете их во фронтенде, можете отключить их загрузку. Добавив код ниже, dashicons.min.css перестанет загружаться на страницах сайта.

function wpdocs_dequeue_dashicon() {
if (current_user_can( 'update_core' )) {
return;
}
wp_deregister_style('dashicons');
}
add_action( 'wp_enqueue_scripts', 'wpdocs_dequeue_dashicon' );

Отключить файлы JS/CSS от Contact Form 7

Используете плагин Contact Form 7 и заметили, что его файлы CSS/JavaScript загружаются на каждой странице? Ну, вы не одиноки.

Хорошая новость: вы можете перестать загружать их с помощью кода ниже.

add_filter( 'wpcf7_load_js', '__return_false' );
add_filter( 'wpcf7_load_css', '__return_false' );

Оригинал статьи: http://geekflare.com/wordpress-performance-optimization-without-plugin/