В работе с WordPress часто возникает ситуация, когда определённые плагины нужны не на всех страницах сайта, а только на некоторых. Например, плагин слайдера требуется только на главной странице, а плагин формы обратной связи — только на странице контактов. Полное отключение плагина уберёт его функционал с сайта, но и снизит нагрузку на сервер и ускорит загрузку страниц, где плагин не нужен.
Зачем отключать плагины на отдельных страницах
Отключение плагинов на выбранных страницах помогает:
- Снизить количество загружаемых CSS и JS файлов, что ускоряет загрузку страниц.
- Избежать конфликтов плагинов, когда один и тот же плагин ведёт к ошибкам на некоторых страницах.
- Оптимизировать производительность сайта, что особенно важно для сайтов с большим количеством плагинов.
Для примера, если ваш сайт использует плагин слайдера, который подключается на всех страницах, а нужен только на главной, стоит отключать его на остальных страницах. Это также уменьшит нагрузку на память и процессор сервера.
Способы отключения плагинов на отдельных страницах
Использование плагина Plugin Organizer
Плагин Plugin Organizer позволяет легко управлять активацией плагинов на страницах. Можно задать правила, где какой плагин должен работать, а где — нет.
Преимущества:
- Удобный интерфейс для выбора страниц и плагинов.
- Возможность создавать группы страниц.
- Поддержка исключений и гибких правил.
Однако, плагин добавляет дополнительный слой в работу сайта, что иногда не оптимально.
Отключение плагинов через код в functions.php
Для более тонкой настройки и минимизации сторонних плагинов можно отключать плагины программно. Ниже пример функции, которая отключает плагин по его пути на всех страницах, кроме заданных.
function wpma_disable_plugin_on_pages() {
if ( is_admin() ) return; // Не отключать в админке
// Плагины для отключения
$plugins_to_disable = [
'contact-form-7/wp-contact-form-7.php',
'some-slider-plugin/slider.php'
];
// Страницы, на которых плагины должны работать
$pages_to_enable = [
'contact', // слаг страницы контакты
'home'
];
// Проверяем текущую страницу
if ( !is_page($pages_to_enable) ) {
foreach ($plugins_to_disable as $plugin) {
if ( is_plugin_active($plugin) ) {
deactivate_plugins($plugin);
}
}
}
}
add_action('wp', 'wpma_disable_plugin_on_pages');Этот код отключает указанные плагины на всех страницах, кроме тех, что перечислены в $pages_to_enable. Однако, функция deactivate_plugins() меняет статус плагина в базе, что не всегда желательно. Лучше избегать этого — есть другой способ.
Отключение загрузки плагина с помощью фильтра
Лучший способ — не отключать плагин полностью, а предотвратить загрузку его скриптов и стилей на ненужных страницах. Для этого можно использовать фильтр option_active_plugins и убрать плагин из списка активных на фронтенде.
function wpma_filter_active_plugins($plugins) {
if ( is_admin() ) return $plugins;
$plugins_to_disable = [
'contact-form-7/wp-contact-form-7.php',
'some-slider-plugin/slider.php'
];
$pages_to_enable = [
'contact',
'home'
];
if ( !is_page($pages_to_enable) ) {
foreach ($plugins_to_disable as $plugin) {
$key = array_search($plugin, $plugins);
if ( false !== $key ) {
unset($plugins[$key]);
}
}
}
return $plugins;
}
add_filter('option_active_plugins', 'wpma_filter_active_plugins');Этот способ не меняет статус плагина, а просто исключает его из списка активных на фронтенде для выбранных страниц. При этом в админке плагины остаются активными и доступны для настройки.
Примеры плагинов и их оптимизация
Оптимизация WPRemark на отдельных страницах
Если вы используете плагин WPRemark для отзывов, но хотите показывать отзывы только на страницах продуктов или блога, можно отключить его скрипты на остальных страницах:
function wpma_dequeue_wpremark_scripts() {
if ( !is_singular('product') && !is_category('blog') ) {
wp_dequeue_script('wpremark-script');
wp_dequeue_style('wpremark-style');
}
}
add_action('wp_enqueue_scripts', 'wpma_dequeue_wpremark_scripts', 20);Отключение Quizle на страницах без викторин
Плагин Quizle может грузить много ресурсов. Если викторина нужна на одной странице, то на остальных лучше отключить его скрипты:
function wpma_dequeue_quizle_scripts() {
if ( !is_page('quiz') ) {
wp_dequeue_script('quizle-script');
wp_dequeue_style('quizle-style');
}
}
add_action('wp_enqueue_scripts', 'wpma_dequeue_quizle_scripts', 20);Советы по безопасному отключению плагинов
Перед отключением плагина на страницах убедитесь, что его функции там не используются. Иначе это может привести к ошибкам PHP или нарушению логики сайта.
Для проверки используйте консоль браузера и логи сервера. Если появляются ошибки, попробуйте добавить проверки на существование функций и классов.
Также рекомендуем тестировать любые изменения на тестовом сайте, чтобы избежать сбоев на рабочем ресурсе.
Если плагин обрабатывает AJAX-запросы или добавляет шорткоды, убедитесь, что отключение на определённых страницах не ломает эти механизмы.