WordPressЗаписки программиста

Как убрать JavaScript и CSS в подвал WordPress?

By 10.07.2016 No Comments

Оптимизация WordPressПростой способ убрать JavaScript в подвал WordPress

Этот совет очень часто мелькает в разных источниках, т.к. Google крайне рекомендует перенести весь javascript вниз страницы, чтобы не блокировать ход отображения.

Тут пытливый ум спросит – а зачем переносить скрипты вниз, в подвал (footer) сайта?
А вот зачем.

Дело в том, что JavaScript-код – исполняется в браузере, то есть работает на стороне пользователя.

Представьте процесс – пользователь открывает страничку сайта, в хедере которой расположено несколько JS-скриптов.

На стороне сервера отрабатывает весь php-код, формирует единый html-документ = исходный код страницы, который начинает передаваться в браузер. Код скрипта, как мы помним, также стоит  вначале документа.

Браузер начинает обрабатывать полученную информацию. Сразу же натыкается на JS-скрипт, останавливает загрузку страницы и начинает этот код исполнять.
Исполняет-исполняет-исполняет-исполняет….
Пользователь скучает перед экраном.
Затем браузер продолжает загрузку, до встречи очередным скриптом.

Главное – выполнение скриптов в самом начале никому не упёрлось никуда – пользователь даже еще не увидел страницу, браузер ведь еще не успел ее отобразить.

Соответственно, самое главное для чего надо перенести js-скрипты в футер – это скорость!

Страница будет грузиться значительно быстрее в  если  все скрипты будут внизу: браузер быстро отобразит html-код и только в конце пойдут загружаться скрипты.

Именно поэтому, лучше все скрипты переносить, как можно ниже, ближе к концу страницы, в ее футер.

Добавляем этот код в functions.php


/**
* Переносим css и js в footer
*/
function footer_enqueue_scripts(){
remove_action('wp_head','wp_print_scripts');
remove_action('wp_head','wp_print_head_scripts',9);
remove_action('wp_head','wp_enqueue_scripts',1);
add_action('wp_footer','wp_print_scripts',5);
add_action('wp_footer','wp_enqueue_scripts',5);
add_action('wp_footer','wp_print_head_scripts',5);
}
add_action('after_setup_theme','footer_enqueue_scripts');

if ( !is_admin() ) wp_deregister_script('jquery');
remove_action( 'wp_head', 'rsd_link' );
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
remove_action( 'wp_head', 'wp_generator' );
remove_action( 'wp_head', 'feed_links_extra', 3 );