Плагин Jetpack — один из самых популярных инструментов для расширения функционала WordPress, но иногда возникает необходимость отключать его только в определённых условиях. Это может быть связано с повышенной нагрузкой, конфликтами с другими плагинами или темой, либо для улучшения скорости загрузки на отдельных страницах.
Почему может потребоваться условное отключение Jetpack в WordPress
Jetpack включает в себя множество модулей, от защиты и статистики до визуальных эффектов и оптимизации. Однако не всегда все эти функции нужны на всех страницах сайта. Например, для страниц с высокой посещаемостью или критичной по скорости загрузки можно временно отключить Jetpack, чтобы снизить нагрузку.
Кроме того, некоторые модули Jetpack могут конфликтовать с кастомными решениями или другими плагинами, особенно если используются специфические темы или кастомные шаблоны. В таких случаях удобно иметь возможность отключать Jetpack выборочно.
Также условное отключение полезно при работе в средах разработки и тестирования, чтобы не мешать работе.
Способы условного отключения Jetpack
Отключение Jetpack на определённых страницах по ID или шаблону
Самый простой способ — отключить загрузку плагина на конкретных страницах с помощью хука plugin_loaded или init. Ниже пример функции, которая отключает Jetpack на странице с ID 42 и на странице с шаблоном template-no-jetpack.php:
function wpbloger_disable_jetpack_conditionally() {
if (is_admin()) {
return; // Не трогаем админку
}
if (is_page(42) || is_page_template('template-no-jetpack.php')) {
// Отключаем Jetpack
remove_action('wp_head', 'jetpack_og_tags');
add_filter('jetpack_json_api_enabled', '__return_false');
add_filter('jetpack_open_graph_enabled', '__return_false');
remove_all_actions('jetpack_stats');
// Отключение основных модулей Jetpack
if (class_exists('Jetpack')) {
remove_action('wp_enqueue_scripts', array(Jetpack::instance(), 'enqueue_styles'));
remove_action('wp_enqueue_scripts', array(Jetpack::instance(), 'enqueue_scripts'));
}
}
}
add_action('init', 'wpbloger_disable_jetpack_conditionally');Этот код отключает ключевые функции Jetpack на выбранных страницах, что позволяет существенно снизить нагрузку.
Отключение всех модулей Jetpack программно
Если требуется полностью отключить Jetpack на сайте или в определённых условиях, можно воспользоваться функцией jetpack_deactivate_module(). Например, чтобы отключить модуль "Статистика" на страницах блога:
function wpbloger_deactivate_jetpack_stats_on_blog() {
if (is_home() || is_archive()) {
if (function_exists('jetpack_deactivate_module')) {
jetpack_deactivate_module('stats');
}
}
}
add_action('init', 'wpbloger_deactivate_jetpack_stats_on_blog');Важно понимать, что полное отключение Jetpack требует внимания к зависимостям, так как некоторые функции могут работать через API модуля.
Использование плагинов для управления Jetpack
Если вы не хотите писать код, есть плагины, которые помогают управлять модулями Jetpack и их активацией по страницам:
- Clearfy Pro — позволяет гибко отключать ненужные модули Jetpack и оптимизировать производительность сайта. Подробнее на wpshop.ru.
- WPDisable — инструмент для отключения скриптов и стилей плагинов по страницам, можно использовать для Jetpack.
Эти решения удобны для тех, кто хочет простого управления без кода.
Как отследить, что Jetpack действительно отключён на нужных страницах
После внедрения условного отключения важно проверить, что Jetpack не грузится там, где не нужно. Для этого:
- Откройте исходный код страницы в браузере и найдите упоминания
jetpack— скрипты и стили должны отсутствовать. - Используйте инструменты разработчика в браузере (например, вкладка Network), чтобы отследить загрузку ресурсов Jetpack.
- Проверьте, что функции, которые использует Jetpack (например, открытые графы или статистика), не работают на выбранных страницах.
Дополнительные рекомендации и примеры кода
Для более гибкого управления можно написать функцию с передачей параметров для отключения Jetpack на произвольных страницах. Например:
function wpbloger_disable_jetpack_on_pages(array $page_ids) {
if (is_admin()) {
return;
}
if (is_page($page_ids)) {
remove_action('wp_head', 'jetpack_og_tags');
add_filter('jetpack_json_api_enabled', '__return_false');
add_filter('jetpack_open_graph_enabled', '__return_false');
remove_all_actions('jetpack_stats');
}
}
add_action('init', function() {
wpbloger_disable_jetpack_on_pages(array(12, 34, 56));
});Такой подход позволяет централизованно управлять отключением Jetpack.
Также полезно комбинировать отключение Jetpack с отключением других тяжёлых плагинов — это даст лучший эффект по оптимизации.