Оптимизация WordPress путём отключения ресурсов WooCommerce
Замечали ли вы, что после активации плагина WooCommerce начинает тормозить весь сайт, а не только страницы магазина?
Это происходит потому что ресурсы магазина (стили и скрипты) загружаются для всего сайта, даже на тех страницах, где они не нужны.
Данный сниппет прекрасно решает данную задачу.
add_action(
'wp_enqueue_scripts',
function() {
// Если это НЕ страницы магазина.
if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() ) {
// Отключаем стили магазина.
wp_dequeue_style( 'woocommerce_frontend_styles' );
wp_dequeue_style( 'woocommerce-general');
wp_dequeue_style( 'woocommerce-layout' );
wp_dequeue_style( 'woocommerce-smallscreen' );
wp_dequeue_style( 'woocommerce_fancybox_styles' );
wp_dequeue_style( 'woocommerce_chosen_styles' );
wp_dequeue_style( 'woocommerce_prettyPhoto_css' );
wp_dequeue_style( 'select2' );
// Отключаем скрипты магазина.
wp_dequeue_script( 'wc-add-payment-method' );
wp_dequeue_script( 'wc-lost-password' );
wp_dequeue_script( 'wc_price_slider' );
wp_dequeue_script( 'wc-single-product' );
wp_dequeue_script( 'wc-add-to-cart' );
wp_dequeue_script( 'wc-cart-fragments' );
wp_dequeue_script( 'wc-credit-card-form' );
wp_dequeue_script( 'wc-checkout' );
wp_dequeue_script( 'wc-add-to-cart-variation' );
wp_dequeue_script( 'wc-single-product' );
wp_dequeue_script( 'wc-cart' );
wp_dequeue_script( 'wc-chosen' );
wp_dequeue_script( 'woocommerce' );
wp_dequeue_script( 'prettyPhoto' );
wp_dequeue_script( 'prettyPhoto-init' );
wp_dequeue_script( 'jquery-blockui' );
wp_dequeue_script( 'jquery-placeholder' );
wp_dequeue_script( 'jquery-payment' );
wp_dequeue_script( 'jqueryui' );
wp_dequeue_script( 'fancybox' );
wp_dequeue_script( 'wcqi-js' );
}
},
99
);
Шикарный сниппет, musthave так сказать. Интересно, почему он по дефолту не включен? Мне кажется загрузка asset’ов только на необходимых страницах это обязательная практика, но почему-то почти никто этим не озадачивается.
Этот вопрос я всегда задаю разработчикам WooCommerce, но они отмалчиваются.
Подcкажите, пожалуйста, правильно ли я понял, что это нужно добавить в functions.php?
Да, либо в functions.php, либо в плагин, либо в mu плагин.
Да. Еще мне нравится подгружать js библиотеки только при необходимости. Например, fancybox только при нажатии на объект с классом .fancybox или datepicker при нажатии на .datepicker и т.д. 🙂
Годное замечание!
Большое спасибо. Сэкономил кучу личного времени. Этот сниппет отключил 90 существующих скриптов и стилей. Остальное уже руками дополнил
Пользуйтесь!
Добрый день!
Спасибо за сниппет.
Скажите, пожалуйста, стоит ли отключать jquery-blockui для категорий товаров и для карточки товара, если кнопка на аякс?
Или может jquery-blockui уже вообще не нужен?
Я его оставил только в корзине
Спасибо, так и сделаю!
Может сможете помочь, в wp_head подключаются непонятный шрифты:
<style id=’wp-fonts-local’>
@font-face{font-family:Inter;font-style:normal;font-weight:300 900;font-display:fallback;src:url(‘/wp-content/plugins/woocommerce/assets/fonts/Inter-VariableFont_slnt,wght.woff2’) format(‘woff2’);font-stretch:normal;}
@font-face{font-family:Cardo;font-style:normal;font-weight:400;font-display:fallback;src:url(‘/wp-content/plugins/woocommerce/assets/fonts/cardo_normal_400.woff2’) format(‘woff2’);}</style>
Как их можно убрать?
Попробуй удалить все шрифты плагином типа Disable and Remove Google Fonts. А так, смотрите тему и плагины и само ядро на наличие данного шрифта.