WordPress как на ладони

Как переопределить вывод скриптов и стилей в подвал?

Как известно, правильное подключение скриптов и стилей происходит с помощью wp_enqueue_script и wp_enqueue_style. Затем в header или footer они выводятся.

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

К примеру, я в самом конце страницы (перед тегом ) вызываю свою функцию the_my_js_css() и вся эта братва выгружается.

0
campusboy
7.5 лет назад 4742
  • 3
    Kama9602

    Ой, опасное это дело. Но можно...

    Смотрим приоритеты, а то они меняются от версии к версии... Открываем файл wp-includes/default-filters.php и находим там нужные события:

    add_action( 'wp_head',             'wp_print_styles',                  8    );
    add_action( 'wp_head',             'wp_print_head_scripts',            9    );
    add_action( 'wp_footer',           'wp_print_footer_scripts',         20    );

    Теперь, отключаем их и подключаем на свое событие, которое будет вызываться в функции, которая будет вызываться где-то в конце:

    // отключаем
    remove_action( 'wp_head',   'wp_print_styles',          8 );
    remove_action( 'wp_head',   'wp_print_head_scripts',    9 );
    remove_action( 'wp_footer', 'wp_print_footer_scripts', 20 );
    
    // пере-подключаем
    add_action( 'my_print_stsc', 'wp_print_styles' );
    add_action( 'my_print_stsc', 'wp_print_head_scripts' );
    add_action( 'my_print_stsc', 'wp_print_footer_scripts' );
    
    // добавляем событие в функцию нашу...
    function the_my_js_css(){
    	// бал бла бла...
    
    	do_action('my_print_stsc');
    }

    Теперь нужно в подвале вызывать функцию the_my_js_css(), так где должны выводиться скрипты и стили.

    Быстрое перемещение скриптов и стилей в подвал

    Чтобы не мучатся, можно так сделать - просто выключаем фильтры вывода в шапке и все что не вывелось там "вылезет" в подвале...

    remove_action( 'wp_head',   'wp_print_styles',          8 );
    remove_action( 'wp_head',   'wp_print_head_scripts',    9 );

    П.С. ладно со скриптами понятно, а вот стили то зачем в подвале? Моргать же будет сайт...

    campusboy 7.5 лет назад

    Я знаю, что будет моргать, но некоторым мега пупер заказчикам важнее попугайчики в google pagespeed insights. Объясняй не объясняй... Да и это вполне решается выводом в html стилей, отвечающих за отрисовку первого экрана, остальное можно бомбить в футер. В Ддужмле есть компонент, который это делает вообще всё автоматом, в WP пока такого не встречал.

    Большое спасибо за решение, последний вариант очень понравился!

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация