Как загрузить CSS в футере

1 мая 2015 г., 19:09:39
Просмотры: 72.6K
Голосов: 22

Я пытался переместить загрузку файла style.css в футер моей WordPress темы. Я уже сделал что-то подобное с 2 js файлами, и это работает нормально - они загружаются в футере:

function my_init() {
    if (!is_admin()) {
        wp_deregister_script('jquery');
        wp_register_script('jquery', 'http://www.studionews24.com/wp-content/themes/network/js/jquery.min.js', false, '1.3.2', true);
        wp_enqueue_script('jquery');

        // загружаем JS файл из моей темы: js/theme.js
        wp_enqueue_script('my_script', 'http://www.studionews24.com/wp-content/themes/network/js/menu-resp.js', array('jquery'), '1.0', true);
    }
}
add_action('init', 'my_init');

Теперь я пытаюсь переместить в футер также style.css и оставить только некоторые правила встроенного CSS в теге <style>. Я пробовал использовать wp_enqueue_style, но это, похоже, не работает для меня должным образом.

Кто-нибудь может помочь найти элегантное решение?

0
Все ответы на вопрос 1
4
43

На самом деле все стили должны размещаться в заголовке. В WordPress нет параметра для этого в функции wp_enqueue_style, потому что традиционно все стили добавлялись в head. В последнее время многие сайты перешли на систему, где критически важные стили "above the fold" загружаются в заголовке, а остальные стили загружаются в подвале (футере).

Вот способ, как это можно сделать: вы можете использовать функцию print_late_styles(), которая вызывается в подвале. Вам просто нужно подключить свои стили после того, как заголовок уже был обработан.

Для этого нужно найти хук, который вызывается на каждой странице после хука wp_head. Например, get_footer может быть одним из таких хуков.

function prefix_add_footer_styles() {
    wp_enqueue_style( 'your-style-id', get_template_directory_uri() . '/stylesheets/somestyle.css' );
};
add_action( 'get_footer', 'prefix_add_footer_styles' );
1 мая 2015 г. 19:29:10
Комментарии

Но что, если я хочу принудительно применить стили в футере? Разве нет способа это сделать?

Giulio Bambini Giulio Bambini
1 мая 2015 г. 19:33:35

print_late_styles() можно использовать для этого, хотя и не рекомендуется, так как эта функция »Выводит стили, которые были добавлены в очередь слишком поздно для HTML-заголовка.«. @GiulioBambini

Nicolai Grossherr Nicolai Grossherr
1 мая 2015 г. 19:39:31

@Emetrop не могли бы вы показать пример кода с использованием функции print_late_style?

Giulio Bambini Giulio Bambini
1 мая 2015 г. 19:50:06

На самом деле, это миф, что стили обязательно должны быть в head. Стили, критически важные для первоначальной отрисовки страницы, действительно должны находиться в head. Остальные, менее важные стили можно загружать внизу страницы для оптимизации скорости загрузки.

NextGenThemes NextGenThemes
25 февр. 2017 г. 22:53:38