Как правильно создавать плагины в WordPress (основы)

Система плагинов в WordPress построена очень даже хорошо. А с помощью плагинов можно создавать практически любые вещи. Например, здесь мы писали о том, как можно создать виджет с рекламой Google через плагин.

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

 

 

Должен ли я использовать плагин или же есть альтернативы?

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

 

Цель кода

Как правило, если новая функция вносит изменение в дизайн активной темы, она должна быть добавлена ​​в шаблоне. С другой стороны, если предполагаемая функция добавляет/изменяет функциональность, ее нужно писать в плагине.

Тем не менее, не всегда можно провести четкую грань между функциональностью и дизайном. В подобных ситуациях ищите ответ на вопрос: «Будете ли вы использовать новую функцию при смене активной темы?». Этот вопрос подводит нас к следующему пункту.

 

Плагины являются независимыми темами

Любой код, который вы добавляете в текущий шаблон, не будет работать при переключении на другую тему. И неудобно будет потом переписывать кусочки кода из старой темы в новую. Вот тут и проявляется польза от использования плагинов по сравнению с дочерними темами и/или файлом functions.php. Ваш код можно будет легко развернуть для новой темы. Иногда бывает важно сохранить возможность переключения дизайна без потери функциональности. А когда эти функции будут не нужны, вы всегда сможете отключить плагин.

 

Вы можете легко масштабировать плагин

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

Плагины могут быть очень примитивными, например, как Hello Dolly, или достаточно сложными для внесения крупных изменений на вашем сайте – например, как Polylang, поэтому возможность масштабирования действительно очень важна.

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

 

 

Можно ли активировать слишком много плагинов?

Есть один довольно популярный миф, что плагины – это «зло» для сайта на WordPress.

Давайте кратко рассмотрим некоторые другие популярные мифы, которые связаны с плагинами:

  • Код в темах работает лучше, чем код в плагинах
  • Плагины замедляют работу сайта
  • Плагины «пожирают» ресурсы сервера

 

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

Обычно проблема заключается в том, что плагины загружают ненужные ресурсы. Эта проблема от незнания пользователей или разработчиков, но не проблема плагинов как таковых.

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

 

 

Лучшие практики при разработке плагина для WordPress

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

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

 

Использование уникальных префиксов

Используйте уникальный идентификатор при реализации своего плагина (например, как сам WordPress использует префикс wp). Каждый файл, переменная и функция должны сопровождаться этим уникальным идентификатором. В большинстве случаев это могут быть инициалы названия плагина, или более сложным – главное, чтобы этот префикс был релевантным и уникальным.

 

Использовать структуру чистой папки плагина

Корневой уровень каталога вашего плагина не должен содержать файлы, отличные от plugin-name.php и (необязательно) файла для удаления плагина. Весь остальной контент должен размещаться в соответствующих папках. Стили CSS – в папке css, картинки – размещаться в папке images и т.д.

 

Предусмотрите способ расширения

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

 

Всегда пишите код плагина при включенном режиме отладки

Первое, что вы должны сделать, когда планируете писать плагин – включить режим отладки. WordPress вызывает ошибки, когда что-то идет не так в коде, но если режим отладки не включен, – вам придется об этом только догадываться. В качестве еще одного преимущества режима отладки выступает возможно использовать последние функции WordPress (если функция устаревшая – вас об этом известит система).

Чтобы включить режим отладки, откройте файл wp-config.php (сделайте резервную копию перед внесением изменений!) в корне сайта WordPress и найдите следующую строку:

define('WP_DEBUG', false);

 

Замените эту строку следующими строчками:

// Включение отладки
define('WP_DEBUG', true);

// Указывать WordPress записывать ошибки в файл журнала отладки /wp-content/debug.log
define('WP_DEBUG_LOG', true);

// Не выводить ошибки на экран, поскольку они записываются в лог (выше)
define('WP_DEBUG_DISPLAY', false);

// Останавливает ошибки при отображении на экране, т.е. не показывает их
@ini_set('display_errors', 0);

 

 

Разъяснения для экшенов и фильтров

Плагины запускаются с использованием хуков WordPress, чтобы взаимодействовать с кодом. Существует два типа хуков (крючков):

 

  1. Экшены (actions)

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

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

 

add_action( 'wp_before_admin_bar_render', 'sebweo_modifying_toolbar_example' );
function sebweo_modifying_toolbar_example() {
  global $wp_admin_bar;
  $wp_admin_bar->add_node( array(
    'id'    => 'site-developer',
    'title' => 'Ссылка на сайт разработчика',
    'href'  => 'https://sebweo.com/',
    'meta'  => array( 'target' => '_blank' )
  ) );
}

 

Обратите внимание на использование sebweo в качестве префикса, — это пример использования лучших практик разработки.

 

 

В Кодексе WordPress есть полный список экшенов, которые можно использовать для внесения изменений в WordPress.

 

 

  1. Фильтры

Фильтры – это крючки (хуки), которые взаимодействуют с данными; они могут управлять и изменять данные при переходе из базы данных в браузер или наоборот. Например, рассмотрим сценарий, в котором браузер запросил пост (публикацию). Поскольку WordPress переносит пост в браузер, он будет прежде применять любые фильтры, которые были добавлены.

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

 

add_filter('the_content', 'dobavlyaem_text_v_statju');
function dobavlyaem_text_v_statju($content){
    $out = $content . "<p>При использовании материалов сайта не забывайте ставить активную обратную ссылку на источник!</p>";
    return $out;
}

 

 

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

В WordPress Codex также есть что почитать и о фильтрах.

 

 

Как создать свой плагин (основы)

Теперь, когда мы ознакомились с концепциями разработки плагинов WordPress, ознакомимся с основами создания плагина.

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

Перейдите в каталог /wp-content/plugins/ и создайте папку с именем вашего плагина. Для наших текущих целей давайте просто назовем ее test-wp-plugin.

Теперь в этом каталоге создадим PHP-файл, необходимый для работы плагина; назовем его sebweo_test-wp-plugin.php. Помните, если у плагина много файлов, они должны храниться в соответствующих папках.

После этого нам нужно объявить WordPress`у, что этот новый файл представляет из себя плагин. Для этого добавим некоторые параметры в файл:

 

<?php
/**
* Plugin Name: Плагин для теста (заголовок для плагина)
* Plugin URI: здесь ссылка на ваш сайт
* Description: тут краткое, но емкое описание плагина (для чего нужен, что делает и т.п.)
* Version: 1.0 --- всегда добавляйте версию плагина
* Author: ваше имя
* Author URI: если ваш персональный сайт доступен по другой ссылке, нежели плагин, укажите ссылку на свой сайт здесь
* License: здесь название лицензии
*/

 

Сохраните файл, и теперь движок WordPress знает, что появился новый плагин!

 

 

Теперь протестируем то, как плагин что-то делает.

 

add_filter('the_editor_content', 'zagotovka_dlya_novogo_posta');
function zagotovka_dlya_novogo_posta( $content ){
  // добавляем текст-заготовку в редактор, только если контента еще нет (пустая запись)
  if( empty( $content ) ){
    $zagotovka  = 'Совсем скоро мир увидит мой очередной шедевр...' . "\n\n";
    $zagotovka  .= 'Для этого нужно всего лишь:' . "\n\n";
    $zagotovka  .= '<ul><li>Писать пост от души</li><li>Писать о чем-то полезном</li><li>Думать о читателях в первую очередь</li></ul>' . "\n\n";
 
    return $zagotovka;
 
  } else{
      return $content;
  }
}

 

 

Добавьте этот код в файл плагина и попробуйте сначала открыть новую запись, а потом уже существующую запись. Заметили, что делает наш тестовый плагин?

 

 

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

Не беспокойтесь о количестве плагинов – беспокойтесь об их качестве!

 

Recent Posts

Как выбрать мастера для перетяжки мебели?

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

2 дня ago

Что лучше выбрать для хостинга: сервер VPS Windows или VPS Linux?

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

1 неделя ago

Лоуренс Питер

Чтобы избегать ошибок, нужно набираться опыта; чтобы набираться опыта, надо делать ошибки Лоуренс Питер  

2 недели ago

Что такое Черное СЕО (Black Hat SEO) — вся нужная информация

Краткое определение Черного SEO Черное СЕО (или Черная оптимизация) — это любая практика, целью которой…

2 недели ago

Права категории C: кому они нужны и как их получить?

Получение водительских прав категории C открывает двери к профессиональной деятельности, связанной с управлением грузовыми автомобилями.…

3 недели ago

Уилл Смит

Хорошие люди принесут вам счастье, плохие люди наградят вас опытом, худшие — дадут вам урок,…

3 недели ago