WordPress как на ладони
wordpress jino

Основы

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

Оглавление:

Создание плагина

Первое что нужно для создание плагина - это создать отдельный каталог (папку) для содержимого плагина, например: my-plugin-name. В этой папке будут все файлы плагина. Среди них особое место занимает главный файл плагина, который желательно, должен совпадать с названием самой папки плагина, например my-plugin-name.php. В результате должна получиться такая структура: wp-content/plugins/my-plugin-name/my-plugin-name.php.

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

<?php
/*
 * Plugin Name: Мой первый плагин
 */

После сохранения, плагин можно увидеть в списке плагинов на сайте WordPress. Войдите в админку WordPress в раздел Плагины (слева в навигации админки). Там вы должны увидеть свой новый плагин!

Если плагин является всего одним файлом как Hello Dolly, то он мог бы находится непосредственно в папке плагинов. Но рекомендуется соблюдать стандарт: файлы плагина должны находиться в своей собственной папке, а главный файл плагина должен иметь название папки плагина.

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

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

Лицензия сообщает пользователям, как они могут использовать код плагина в своих целях. Для поддержания совместимости с ядром WordPress рекомендуется выбрать лицензию, работающую с GNU General Public License (GPLv2+).

Существуют и другие параметры в заголовке

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

<?php
/**
 * Plugin Name: Название плагина
 * Description: Описание плагина желательно не очень длинное
 * Plugin URI:  Ссылка на инфо о плагине
 * Author URI:  Ссылка на автора
 * Author:      Имя автора
 * Version:     Версия плагина, например 1.0
 *
 * Text Domain: Идентификатор перевода, указывается в load_plugin_textdomain()
 * Domain Path: Путь до файла перевода. Нужен если файл перевода находится не в той же папке, в которой находится текущий файл.
 *              Например, .mo файл находится в папке myplugin/languages, а файл плагина в myplugin/myplugin.php, тогда тут указываем "/languages"
 *
 * License:     GPL2
 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
 *
 * Network:     Укажите "true" для возможности активировать плагин по все сети сайтов (для Мультисайтовой сборки).
 */

Шаблон для разработки WordPress плагинов

Чтобы не создавать файлы и структуру с нуля, можно использовать шаблон для создания плагина - WordPress Plugin Boilerplate. Но использовать нужно генератор этого шаблона, где указывается название плагина, которое будет использовано в названиях папок, классов и функций - WordPress Plugin Boilerplate Generator.

Шаблон представляет собой стандартную и организованную объектно-ориентированную основу.

Шаблон придерживаются стандартов PHP кода для WordPress.

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

Хуки: экшены и фильтры

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

Существует два типа хуков в WordPress:

  • события (actions)
  • фильтры (filters)

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

Непосредственно к плагинам относятся три функции отвечающие за хуки плагина:

  • register_activation_hook() - регистрирует функцию, которая будет срабатывать во время активации плагина.
    Используется для добавления настроек плагина и т.п.

  • register_deactivation_hook() - регистрирует функцию, которая должна запускаться после деактивации плагина.
    Используется для удаления временных данных плагина.

  • register_uninstall_hook() - регистрирует функцию, которая вызывается при удалении плагина.
    Используется при удалении плагин для удаления всех данных плагина: в настройках, в файлах, в базе данных и т.д.

Кроме этих трех функций к API плагинов относятся все функции хуков и некоторые функции плагинов.

Можно создавать свои собственные хуки в исходном коде плагина с помощью do_action() или apply_filters(). Они позволят разработчикам расширить возможности плагина и сделают его расширяемым - таким же как ядро WordPress.

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

Используйте WordPress API

WordPress предоставляет ряд API. API могут значительно упростить написание кода. Т.е. не нужно изобретать колесо — оно уже есть и 100 раз улучшено.

Некоторые API:

  • API опций - упрощает создание и управление опциями плагина, которые сохраняются в базу данных.

  • HTTP API - упрощает создание HTTP запросов в PHP. Отличная замена велосипедов на cURL.

Как WordPress загружает плагины

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

$active_plugins = get_option( 'active_plugins' );

/* Получим в $active_plugins
Array
(
	[0] => hello-dolly/hello-dolly.php
	[1] => backupwordpress/backupwordpress.php
	[2] => democracy-poll/democracy.php
	[3] => disable-emojis/disable-emojis.php
)
*/

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

Подробнее читайте здесь.

Eugene Kopich 100web2033.com
Creative sites for creative people ★ Digital marketing
Основы Комментариев нет

Здравствуйте, !

Ваш комментарий