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

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

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

Нельзя просто взять и написать плагин для WordPress?

Сначала может показаться, что создание плагина для WordPress — это что-то невероятно сложное и это нужно долго изучать, но на самом деле всё зависит от задач, которые выполняет плагин, понятно, что если вы разрабатываете «свой WooCommerce», то возможно вам будет мало и года разработки, но если ваш плагин просто добавляет несколько строчек CSS в админку, то это займёт от силы 5 минут.

нельзя так просто взять и написать плагин для WordPress

Например однажды один мой приятель решил создать плагин, связанный с 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, то всё будет отлично работать.

Создание плагина для WordPress, который перекрашивает admin bar в другой цвет

Но мы же пишем плагин, поэтому этот код держим рядом и переходим ко второму шагу.

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

Есть два варианта:

  • это когда вы просто создаёте PHP-файл с уникальным названием и отправляете его в папку wp-content/plugins,
  • либо, если вы считаете, что ваш плагин будет состоять из нескольких файлов, да ещё и содержать какие-то ресурсы, типо CSS, JS и изображений, то тогда мы этот файл еще и помещаем в папку с таким же названием.

В общем либо /wp-content/plugins/misha.php, либо /wp-content/plugins/misha/misha.php (рекомендуется).

Однако после того, как вы всего лишь создадите эти файлы, ничего не произойдёт, поэтому добавьте в главный файл плагина (ну он сейчас один) эти строчки:

<?php
/* Plugin name: Мишин плагин */

Иииии:

Плагин для WordPress, который мы создали

Поимимо «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
 */

После вставки всех этих параметров то, как плагин выглядит в админке, изменится:

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

Вот описание всех мета-параметров:

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.

Окей, с созданием плагинов разобрались, а как насчёт создания темы для WordPress? Вот это уже посложнее, а разобраться вам поможет мой видеокурс!

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!

Комментарии — 8

Комментирование этого поста более не доступно.