WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Основы

В основе любого плагина лежит 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 плагинов

Чтобы не создавать файлы и структуру с нуля, можно использовать шаблон для создания плагина:

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

Шаблон придерживаются стандартов 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
)
*/

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

9 комментов
  • @ Бахромжон

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

    4
    Ответить4 мес назад #
    • Кот
      1. Чаще, для самореализации, самоутверждения, желание поделиться.
      2. Реже, чтобы была возможность обновляться, когда свой плагин юзаешь на разных сайтах. Тут еще плюшки, пользователи могут предложить норм идеи для развития плагина, помогут найти баги.
      3. Реже, чтобы продавать PRO версию.
      4
      Ответить4 мес назад #
    • Dima

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

      1
      Ответитьмесяц назад #
  • Rain

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

    Ответить3 мес назад #
    • Kama7375

      Для этого нужно добавить плагин в каталог плагинов WordPress. Или нужно написать свой сервер обновлений и держать плагины там, но это уже совсем другая история...

      Ответить3 мес назад #
      • Rain

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

        Ответить3 мес назад #
  • knastnt cайт: knasys.ru

    Здравствуйте, исправьте пожалуйста ссылку wppb.me на wppb.io

    1
    Ответить3 мес назад #
    • campusboy3301 cайт: www.youtube.com/c/wpplus

      Добрый день. Спасибо, поправлено!

      1
      Ответить3 мес назад #
  • @ Василий

    Есть ли способ, внутри плагина, определить, что на сайте уже установлена ранняя версия и происходит именно обновление плагина, а не его установка?

    Ответитьмесяц назад #
Здравствуйте, !     Войти . Зарегистрироваться