TechBlogSD - Все для WordPress и WEB разработки
WEB и WordPress инструкции, новости, обзоры тем и плагинов

Как отключить плагины WordPress на определенных страницах и постах с плагином и без (через функцию)

2 619

Когда речь заходит о производительности WordPress, нам есть, что сказать о плагинах. Каждый плагин добавляет PHP-код, который должен быть выполнен, обычно он включает скрипты и стили, и может даже выполнять дополнительные запросы к базе данных. Это означает, что ненужные плагины могут повлиять на скорость страницы и негативно повлиять на пользовательский опыт и рейтинг вашей страницы.

В качестве примера рассмотрим плагин, который создает и отображает пользовательские формы на первых страницах, например контактную форму 7. Как правило, вам понадобится только одна форма на одной странице, но в идеале вы можете встроить форму на любую страницу, используя шорткод плагина. По этой причине контактная форма 7 загружает скрипты и стили на каждой странице вашего сайта.

Но действительно ли вы хотите запускать код плагина и включать скрипты и стили на каждой странице сайта WordPress?

В этом посте я покажу вам, как предотвратить загрузку ненужных плагинов на определенные посты / страницы, чтобы вы могли устанавливать дополнительные плагины (конечно, не сходите с ума), и при этом ваш сайт WordPress загружался быстро. Чтобы выполнить эту задачу, мы собираемся программно отключить плагины WordPress для определенных постов и страниц. Это четырехступенчатый процесс:

  • Выберите наиболее популярные плагины, которые соответствуют вашим потребностям, и сравните их функции и влияние на скорость страницы.
  • Программно перечислять и фильтровать плагины перед загрузкой страницы.
  • Программно фильтруйте и деактивируйте ненужные плагины с помощью mu-plugin.
  • Отфильтруйте и деактивируйте ненужные плагины с помощью плагина.
  • Отслеживайте эффективность сайта.

Давайте углубимся.

Три общих правила, которым нужно следовать при выборе плагина

Следующие общие правила могут быть полезны при выборе плагина:

  • Устанавливайте только хорошо закодированные плагины от проверенных разработчиков: учитывайте активные установки, оценку пользователей, поддержку клиентов, частоту обновления и любую полезную информацию, поступающую от сообщества WordPress.
  • Предпочитайте масштабируемые плагины: сравнивайте аналогичные плагины с точки зрения производительности, используя инструменты разработчика браузера и / или онлайн-сервисы, такие как Google Pagespeed Insights, Pingdom и GTmetrix, чтобы оценить влияние каждого плагина на время загрузки страницы.
  • Не устанавливайте ненужные плагины: это должно быть очевидно, но стоит упомянуть, что вы никогда не должны устанавливать плагин, который вам не нужен по соображениям безопасности и производительности. Кроме того, время от времени проверяйте свои плагины и удаляйте те, которые вам больше не нужны и больше не используете.

Репутация репозитория WordPress

Каталог плагинов WordPress предоставляет соответствующую информацию, которую мы всегда должны учитывать при выборе плагина

Пример из реальной жизни

Contact Form 7 – отличный плагин, который создает и отображает формы в WordPress. Это идеальный пример для наших целей, поскольку он включает следующие файлы на каждой странице, даже если страница не содержит форму:

  • style.css
  • scripts.js

Сетевая панель Chrome DevTools

Панель Chrome DevTools Network предоставляет подробную информацию о сетевых запросах, сделанных при загрузке страницы

Плагин может замедлить работу вашего сайта, но мы можем заставить WordPress выборочно деактивировать плагины в зависимости от URL-адреса запроса. Если вы разработчик, прочитайте следующий раздел, где мы узнаем, как программно управлять плагинами, и создадим mu-плагин, который фильтрует ненужные плагины. Если вы не разработчик, не стесняйтесь перейти к разделу, посвященному плагинам, которые позволяют фильтровать и организовывать плагины .

Как получить список всех активных плагинов программно

Во-первых, вы можете получить список всех активных плагинов на вашем сайте WordPress с помощью простого фрагмента кода PHP. Вы можете добавить следующий код либо в пользовательский плагин, либо в редактор бесплатного плагина WordPress, например Code Snippets. Если вы решили использовать свой собственный плагин, просто не забудьте добавить заголовок плагина, как показано ниже.

Активные плагины WordPress

Активные плагины в таблице wp_options

Каждый активный плагин хранится в wp_optionsтаблице где options_nameесть active_plugins. Таким образом, мы можем извлечь список этих плагинов с помощью простого get_optionвызова. Вот код:

Измените данные плагина, затем сохраните active-plugins.phpфайл и загрузите его в свою /wp-content/plugins/папку. Создайте новый пост в блоге и [activeplugins]включите шорткод. Теперь должен отображаться список всех активных плагинов.

Список активных плагинов

Список активных плагинов показывает папку и название каждого плагина

Сделав это, мы можем пойти дальше и программно добавить или удалить плагины, используя преимущества option_active_pluginsфильтра. Этот фильтр относится к группе фильтров option_ $ option_name, которые позволяют фильтровать любую опцию после ее извлечения из базы данных. Поскольку все активные плагины хранятся в wp_optionsтаблице, где option_valueесть active_plugins, option_active_pluginsфильтр предоставляет способ программно активировать или деактивировать плагины.

Таким образом, мы можем активировать плагин программно. Скажем, в качестве примера, вы хотите активировать плагин ACF. Вот код:

add_filter( 'option_active_plugins', function( $plugins ){ $myplugin = "advanced-custom-fields/acf.php"; if( !in_array( $myplugin, $plugins ) ){ $plugins[] = $myplugin; } return $plugins; } );

В этом примере мы предполагаем, что плагин установлен и еще не активирован.

Код выше просто добавляет плагин в список активных плагинов на каждой странице нашего сайта. Не очень полезно, но вы получите суть.

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

Как создать обязательный плагин для программной деактивации плагинов

Мы собираемся создать плагин Must use, который представляет собой плагин, расположенный в определенной /wp-contentподпапке, и запускается перед любым обычным плагином.

К сожалению, в этой ситуации нам не разрешено использовать условные теги, поскольку условные теги запроса не работают до выполнения запроса. До этого они всегда возвращают false. Поэтому мы должны проверить наши условия в противном случае, например, путем анализа URI запроса и проверки соответствующего пути URL.

Добавьте следующий код в active-plugins.phpфайл, затем переместите его в /wp-content/mu-plugins:

Давайте углубимся в этот код:

  • parse_url возвращает путь запрошенного URL.
  • strpos находит позицию первого вхождения '/wp-admin/'и возвращает, falseесли строка не найдена. $is_adminпеременная хранит возвращаемое значение.
  • Условие не позволяет запускать фильтр в панели администратора, чтобы мы могли безопасно обращаться к страницам настроек плагина. Если URI запроса не содержит '/wp-admin/', тогда мы вызываем option_active_pluginsфильтр.
  • Наконец, если текущий плагин не находится в массиве активных плагинов и URI текущей страницы не содержит /contact/, то мы удаляем плагин из $plugins.

Теперь сохраните ваш плагин и загрузите его в свою /wp-content/mu-plugins/папку. Очистите кеш и добавьте [activeplugins]шорткод на несколько страниц. Это должно быть показано в списке только на /contact/странице.

Нет сценария CF7

Файл script.js исчез из списка ресурсов страницы

Затем мы можем сразу сбросить массив плагинов, добавив немного PHP.

$request_uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH ); $is_admin = strpos( $request_uri, '/wp-admin/' ); if( false === $is_admin ){ add_filter( 'option_active_plugins', function( $plugins ){ global $request_uri; $is_contact_page = strpos( $request_uri, '/contact/' ); $myplugins = array( "contact-form-7/wp-contact-form-7.php", "code-snippets/code-snippets.php", "query-monitor/query-monitor.php", "autoptimize/autoptimize.php" ); if( false === $is_contact_page ){ $plugins = array_diff( $plugins, $myplugins ); } return $plugins; } ); }

В этом примере мы сначала определили массив плагинов, которые нужно удалить, а затем удалим их с помощью array_diff. Эта функция «сравнивает массив1 с одним или несколькими другими массивами и возвращает значения в массиве1, которых нет ни в одном из других массивов».

Вы можете скачать полный код этого плагина из Gist.

Теперь вы можете загрузить плагин в папку mu-plugins и просмотреть любую страницу вашего сайта. Плагин mu может быть сильно настроен, добавляя больше условий и проверяя больше URI, но каждое условие должно быть добавлено в код вручную, и в долгосрочной перспективе этот простой плагин mu может быть сложным и трудным в обслуживании.

По этой причине вы можете проверить следующие плагины.

Плагины, которые фильтруют плагины

В качестве альтернативы мы можем рассмотреть несколько хороших плагинов, которые позволяют нам добавлять фильтры, которыми можно управлять из панели администратора WordPress.

Фильтр загрузки плагинов

Фильтр загрузки плагинов – это бесплатная опция для пользователей WordPress, которым необходимо фильтровать плагины при нескольких условиях.

Фильтр загрузки плагинов

Плагин Load Filter позволяет фильтровать плагины как в панели администратора, так и на страницах сайта.

В настоящее время он поддерживает следующие функции:

  • Почтовые форматы
  • Пользовательские типы сообщений
  • Jetpack модули
  • WP Embed Content Card
  • Фильтр URL для эксперта (REST API / Heartbeat / AJAX / AMP / и т. Д.)

После того, как фильтр был активирован, пользователь-администратор может указать, где на сайте он должен быть применен, как показано на рисунке ниже.

Вкладка «Активация фильтра типов страниц»

После активации фильтра администраторы сайта могут устанавливать свои исключения на вкладке «Активация фильтра типов страниц».

Организатор плагинов

Plugin Organizer – популярный плагин с более чем 10 000 активных установок и впечатляющим рейтингом 5 из 5 звезд. Это более полный плагин, позволяющий администраторам сайта:

  • Выборочно деактивировать плагины по типу поста и URL запроса
  • Выборочно деактивировать плагины по ролям пользователей
  • Создать группы плагинов
  • Изменить порядок загрузки плагина
  • Дополнительные возможности

Страница настроек Организатора плагинов

Страница настроек Организатора плагинов

Страница параметров глобальных плагинов предоставляет возможность перетаскивания, которая позволяет пользователю с правами администратора глобально отключать плагины, не позволяя WordPress запускать один или несколько плагинов в любом месте сайта, если только для отдельных постов или страниц не указано иное. Та же функция доступна для страниц поиска и типов сообщений.

Плагин-органайзер отключить CF7 глобально

CF7 был глобально отключен

Плагин добавляет метабокс на экране редактирования поста, так что администратору разрешено переопределять глобальные настройки и настройки типа поста. Эту функцию можно активировать и для типов записей, проверив соответствующий элемент на экране общих настроек. Отличная функция – это сообщение об отладке Plugin Organizer, которое предоставляет администратору сайта полезную информацию о плагинах, влияющих на каждую страницу сайта.

Более подробную информацию можно найти в их документации .

Плагин Организатор пользовательских метабоксов на странице контактов

Плагин Организатор пользовательских метабоксов на странице контактов

Плагин Perfmatters

Частично другой подход исходит от плагина Perfmatters. Это превосходная альтернатива, которая позволяет администратору сайта выборочно загружать ресурсы тем и плагинов в зависимости от URL или пользовательского типа публикации. Это отличный инструмент для оптимизации плагинов и тем. На самом деле, это разработано членом команды из Kinsta!

Менеджер сценариев Perfmatters

Менеджер сценариев Perfmatters

Плагин имеет функцию под названием «Диспетчер скриптов», где все сгруппировано по имени плагина или темы. Это позволяет легко отключить сразу весь плагин или отдельные файлы CSS и JavaScript внутри него.

Вы даже можете отключить сценарии с помощью регулярных выражений. Это особенно полезно для сайтов с более сложной структурой URL или динамически генерируемых страниц.

Это очень мощный инструмент, который может значительно увеличить скорость на ваших сайтах WordPress (особенно на домашней странице). Несколько примеров того, для чего это можно использовать:

  • Плагины для обмена в социальных сетях должны загружаться только в ваши сообщения. Вы можете легко отключить его везде и загружать только для типов записей или даже для пользовательских типов записей.
  • Популярный плагин Contact Form 7 загружается на каждой странице и в каждом сообщении. Вы можете легко отключить его везде одним щелчком мыши и включить только на своей странице контактов.
  • Если вы обновились до WordPress 5.0, но не с помощью блока редактора Гутенберга, возможно, вы все еще используете классический редактор, есть два дополнительных интерфейсных скрипты, которые добавляются на веб-узле, который можно отключить: /wp-includes/css/dist/block-library/style.min.css и /wp-includes/css/dist/block-library/theme.min.css

Как видно из этого обзора перфматтеров, их общее время загрузки уменьшилось на 20,2%. Только на своей домашней странице они смогли сократить количество HTTP-запросов с 46 до 30! Размер страницы также сократился с 506,3 КБ до 451,6 КБ.

Тест скорости с плагином perfmatters

Тест скорости с плагином perfmatters

Как отслеживать производительность: инструменты разработчика браузера

Основным шагом на пути к оптимизации производительности является измерение времени загрузки. У нас есть несколько плагинов и онлайн-инструментов, которые мы можем использовать для отслеживания эффективности сайта, таких как Google Pagespeed Insights и Pingdom. Но, прежде всего, мы можем использовать инструменты разработчика для браузера, которые предоставляют много полезной информации.

Каждый инспектор браузера имеет панель «Сеть», которая отображает список сетевых запросов и соответствующую информацию. Перейдите по этим ссылкам для получения подробной документации:

При установке WordPress с восемнадцатью активными плагинами мы неоднократно проверяли страницу публикации с помощью Firefox Dev Tools. Мы сначала измерили скорость страницы и перечислили запрашиваемые ресурсы перед установкой любого плагина фильтрации. На следующем рисунке показаны выходные данные инструмента анализа производительности, доступного в сетевом мониторе Firefox.

Инструмент анализа производительности Firefox

Инструмент анализа производительности Firefox

Монитор сети предоставляет следующие результаты (пустой кэш):

  • размер: 255,19 кб
  • время загрузки: 1,24 секунды
  • запросы: 12

После этого мы установили Организатор плагинов, чтобы WordPress не запускал плагин CF7. Круговая диаграмма немного меняется.

Инструмент анализа производительности Firefox

Инструмент анализа производительности Firefox

Теперь страница загружается быстрее (пустой кеш):

  • размер: 104.21 кб
  • время загрузки: 0,80 секунды
  • запросы: 8

Затем мы деактивировали несколько ненужных плагинов, и на следующем рисунке показано, насколько мы улучшили производительность страницы.

Инструмент анализа производительности Firefox

Инструмент анализа производительности Firefox

После отключения всех ненужных плагинов пустой кеш браузера монитора сети возвращает следующие данные:

размер: 101,98 Кб
загрузки: 0,46 секунды
запросы: 8
Мы можем сравнить результаты наших тестов. Размер ресурса был уменьшен на 60,04%, время загрузки уменьшено с 1,24 до 0,46 секунды , а количество HTTP-запросов уменьшено с 12 до 8. Это подтверждает, что плагины могут влиять на производительность страницы и что мы можем увеличить скорость страницы пользуясь плагином фильтра.

Источник записи: https://kinsta.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее