В WordPress часто возникает необходимость отключить определённые скрипты и стили только на одной странице сайта. Это помогает уменьшить общий вес страницы, ускорить загрузку и повысить производительность без необходимости отключать ресурсы глобально для всего сайта.
Почему важно удалять скрипты и стили на конкретных страницах
Многие плагины и темы подключают свои CSS и JS файлы на всех страницах сайта, даже если они нужны только на одной или нескольких страницах. Это увеличивает время загрузки, трафик и может негативно влиять на SEO и пользовательский опыт.
Удаление ненужных ресурсов на страницах, где они не используются, помогает:
- Снизить время загрузки страницы.
- Уменьшить количество HTTP-запросов.
- Снизить нагрузку на сервер.
- Улучшить оценки в Google PageSpeed и других инструментах.
Однако делать это нужно аккуратно, чтобы не сломать функциональность сайта.
Как определить, какие скрипты и стили отключать
Для начала нужно понять, какие CSS и JS подключаются на странице, и какие из них можно убрать. Для этого:
- Откройте нужную страницу в браузере.
- Откройте инструменты разработчика (F12).
- Перейдите во вкладку Network и отфильтруйте по CSS и JS.
- Посмотрите список подключенных файлов и определите плагины или темы, которые их подключают.
Также можно использовать плагины, например, Query Monitor, который показывает, какие скрипты и стили загружены.
Практическое решение: как отключить скрипты и стили на одной странице
В WordPress для удаления скриптов и стилей используется хук wp_enqueue_scripts с функцией wp_dequeue_script() и wp_dequeue_style(). Чтобы ограничить действие на конкретную страницу, используется проверка условий с функцией is_page(), is_single() или другие условные теги.
Пример функции для удаления скрипта и стиля только на странице с ID 42:
function wpweb_dequeue_assets_on_page() {
if (is_page(42)) {
wp_dequeue_script('plugin-script-handle');
wp_dequeue_style('plugin-style-handle');
}
}
add_action('wp_enqueue_scripts', 'wpweb_dequeue_assets_on_page', 100);
Здесь 'plugin-script-handle' и 'plugin-style-handle' — это зарегистрированные в WordPress идентификаторы скриптов и стилей, которые вы хотите отключить. Обычно их можно узнать в документации плагина или посмотрев исходный код темы/плагина.
Как узнать handle скрипта или стиля
Для этого можно использовать следующий код, который выведет список всех подключённых скриптов и стилей на страницу:
function wpweb_list_all_assets() {
global $wp_scripts, $wp_styles;
echo '<h2>Скрипты</h2><ul>';
foreach ($wp_scripts->queue as $handle) {
echo '<li>' . esc_html($handle) . '</li>';
}
echo '</ul>';
echo '<h2>Стили</h2><ul>';
foreach ($wp_styles->queue as $handle) {
echo '<li>' . esc_html($handle) . '</li>';
}
echo '</ul>';
}
add_action('wp_footer', 'wpweb_list_all_assets');
Добавьте этот код временно, откройте нужную страницу и посмотрите внизу все handle. После этого удалите этот вспомогательный код, чтобы не показывать списки посетителям.
Пример отключения скриптов популярных плагинов на конкретных страницах
Рассмотрим примеры для популярных плагинов:
Отключение Contact Form 7 на странице "Контакты" (ID 12)
function wpweb_remove_cf7_assets() {
if (is_page(12)) {
wp_dequeue_script('contact-form-7');
wp_dequeue_style('contact-form-7');
}
}
add_action('wp_enqueue_scripts', 'wpweb_remove_cf7_assets', 100);
Если на странице с формой контактной формы не используется CF7, например, вы хотите отключить ресурсы на страницах без форм.
Отключение WooCommerce скриптов и стилей на всех страницах кроме магазина
function wpweb_disable_woocommerce_assets() {
if (!is_woocommerce() && !is_cart() && !is_checkout()) {
wp_dequeue_style('woocommerce-general');
wp_dequeue_style('woocommerce-layout');
wp_dequeue_style('woocommerce-smallscreen');
wp_dequeue_script('woocommerce');
wp_dequeue_script('wc-cart-fragments');
}
}
add_action('wp_enqueue_scripts', 'wpweb_disable_woocommerce_assets', 99);
Советы по безопасности и совместимости
При отключении скриптов и стилей нужно следить, чтобы не нарушить работу сайта и плагинов. Рекомендуется:
- Тестировать изменения на тестовом или локальном сервере.
- Сохранять резервные копии перед изменениями.
- Проверять работу страниц после отключения ресурсов.
- Использовать условные теги для точного таргетинга страниц.
Если ресурсы подключаются динамически или через inline-скрипты, отключение может быть сложнее и потребует более глубокого анализа.
Заключение
Удаление ненужных скриптов и стилей на отдельных страницах WordPress — эффективный способ оптимизировать скорость загрузки и снизить нагрузку на сервер. С помощью условных проверок is_page() и функций wp_dequeue_script(), wp_dequeue_style() можно гибко управлять подключаемыми ресурсами. Главное — делать это аккуратно и тестировать результаты.