В этом уроке – основы создания плагина для WordPress. Конечно, на разработку некоторых плагинов могут уйти недели, но уже в конце этого урока вы сможете создать свой собственный плагин.
Нельзя просто взять и написать плагин для WordPress?
Сначала может показаться, что создание плагина для WordPress — это что-то невероятно сложное и это нужно долго изучать, но на самом деле всё зависит от задач, которые выполняет плагин, понятно, что если вы разрабатываете «свой WooCommerce», то возможно вам будет мало и года разработки, но если ваш плагин просто добавляет несколько строчек CSS в админку, то это займёт от силы 5 минут.
Например однажды один мой приятель решил создать плагин, связанный с SEO и фильтрацией товаров, так его компания выделила ему 80к бюджета и дала два месяца на разработку.
Весь наш процесс мы разделим на шаги для удобства понимания.
Определиться с тем, какие задачи будет выполнять плагин
Скажу так, код, который находится в плагине, очень схож с тем кодом, который размещают в functions.php
. То есть вы можете потренироваться с готовыми хуками.
Ну раз уже я заговорил о произвольном CSS коде, то эту цель и будет выполнять мой плагин. Например я просто покрашу верхнюю панель в админке в другой цвет. CSS я вставлю прямо через тег, используя хук admin_head
.
add_action( 'admin_head', 'true_colored_admin_bar_72aee6' ); function true_colored_admin_bar_72aee6(){ echo '<style>#wpadminbar{background-color: #72aee6;}</style>'; // выводим стили }
По сути это готовый код и если вы отправите его в functions.php
, то всё будет отлично работать.
Но мы же пишем плагин, поэтому этот код держим рядом и переходим ко второму шагу.
Создание плагина
Есть два варианта:
В общем либо /wp-content/plugins/misha.php
, либо /wp-content/plugins/misha/misha.php
(рекомендуется).
Однако после того, как вы всего лишь создадите эти файлы, ничего не произойдёт, поэтому добавьте в главный файл плагина (ну он сейчас один) эти строчки:
<?php
/* Plugin name: Мишин плагин */
Иииии:
Поимимо «Plugin name» у плагинов есть и другие метаданные, давайте их разберём подробнее.
Метаданные плагина
В свой главный файл плагина теперь отправляем что-то в этом духе:
<?php
/*
* Plugin Name: Мишин плагин
* Plugin URI: https://misha.agency/wordpress/sozdai-svoi-plugin.html
* Description: Описание супер-плагина
* Version: 1.1.1
* Author: Миша Рудрастых
* Author URI: https://misha.agency
* License: GPLv2 or later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
*
* Text Domain: truemisha
* Domain Path: /languages
*
* Network: true
*/
После вставки всех этих параметров то, как плагин выглядит в админке, изменится:
Вот описание всех мета-параметров:
- Plugin Name
- (единственный обязательный параметр!) Название плагина, как видите можно писать на русском.
- Plugin URI
- Если у вашего плагина в интернете есть страница с описанием или документацией, то неплохо бы тут указать её URL.
- Description
- Ну как бы описание.
- Version
- Версия плагина. Да, туториал совсем для новичков, поэтому добавлю, что например вы запустили свой плагин с версией 1.0 и люди пользуются, а потом поменяли какой-то код внутри своего плагина, а значит и его версия изменилась, например на 1.1
- Author
- Вы.
- Author URI
- Ссылка на ваш сайт или на профиль в соц сети.
- License
- Сам WordPress выпускается под лицензией GPL, возможно вы знаете, но также подразумевается, что все плагины и темы под WordPress тоже должны использовать эту лицензию.
- License URI
- Ссылка на лицензию.
- Text Domain
- Идентификатор перевода, который будет использовать в функции load_plugin_textdomain() при переводе плагина на другие языке, читайте руководство по локализации плагинов и тем WordPress.
- Domain Path
- Если файлы перевода вашего плагина находятся в папке languages внутри папки плагина, то значение Domain Path будет
/languages
. Если ваш плагин находится в официальном репозитории WordPress, то этот параметр можно не использовать. - Network
- Если ваш плагин предназначен для сети сайтов WordPress Мультисайт и должен активироваться сразу для всей сети, то укажите этот параметр в значение true.
Хуки в плагине
На самом деле я уже упоминал выше, что по сути вы можете использовать ваш плагин, для того, чтобы сделать изменения на сайте при помощи экшенов или фильтров.
И также выше мы рассмотрели пример, в котором это и сделали, изменив цвет админ бара в админке. Тем не менее есть пара хуков, которые относятся непосредственно к плагинам и давайте уделим им немного внимания.
register_activation_hook()
Функция register_activation_hook() позволяет привязать какую-то произвольную функцию к событию активации плагина.
Сразу давайте рассмотрим пример – например деактивируем плагин «Hello Dolly» функцией deactivate_plugins() при активации вашего плагина.
register_activation_hook( __FILE__, 'truemisha_activate' ); function truemisha_activate(){ // функция, срабатывающая один раз при активации плагина deactivate_plugins( 'hello.php' ); }
В реальности этот хук чаще всего используется при создании кастомных таблиц в базе данных.
register_deactivation_hook()
Функция register_deactivation_hook() позволяет привязать какую-то произвольную функцию к событию активации плагина.
register_activation_hook( __FILE__, 'true_deactivate' ); function true_deactivate(){ // функция, срабатывающая один раз при деактивации плагина // делаем что-либо }
register_uninstall_hook()
Функция register_uninstall_hook() позволяет привязать какую-то произвольную функцию к событию активации плагина.
Предположим после удаления вашего плагина, вполне логично очищать базу данных от его настроек, тогда код будет выглядеть так:
register_uninstall_hook( __FILE__, 'true_uninstall' ); function true_uninstall(){ delete_option( 'true_plugin_settings' ); }
Также в ситуации с удалением плагина вы можете рассмотреть вариант с использованием файла uninstall.php.