Как создать простой плагин для WordPress
Плагины помогают расширяют функциональность движка WordPress, их легко установить и управлять ими из панели администрирования. Для использования подавляющего большинства плагинов, нет необходимости в знаниях программирования.
Уже существуют тысячи готовых плагинов, покрывающие почти все задачи при создании сайтов. Но бывают ситуации, когда функционала готового плагина не хватает или плагин перестал развиваться много лет назад (такое довольно часто бывает) и не поддерживается современными версиями Вордпресса и PHP.
Как быть в таком случае? Сделать собственный плагин или доработать существующий, а для этого необходимо иметь представление как устроены плагины в Вордпресс.
В этом уроке я покажу, как вы можете создать простой плагин WordPress.
Не хочется создавать уж совсем простой плагин, который делает какую то примитивную функцию, например заменяет слово в админке. Наш плагин будет состоять из нескольких файлов и работать с базой данных.
UPD. В конце я все-таки покажу пример супер простого плагина.
Так же предполагается что вы имеете представление о том как работать с БД из Вордпресса, в примерах ниже мы обращаемся к методам класса wpdb через глобальную переменную $wpdb.
Что будет делать наш плагин? Он будет хранить базу подписчиков, мы сможем просматривать подписчиков в виде таблицы, удалять их и добавлять.
Подготовка. Создаем каталог и необходимые файлы
Все плагины WordPress храняться в папке wp-content/plugins/.
Назовем наш плагин «Мой первый плагин», он будет располагаться в каталоге wp-content/plugins/myfirstplugin.
Создадим в каталоге нашего плагина 3 файла:
myfirstplugin.php – это главный файл плагина, он отвечает за активацию/деактивацию плагина, создает таблицу в базе данных, отвечает за отображение главной страницы плагина в панеле администирования.
displaylist.php – Выводит записи из базы данных
addentry.php – Добавляет запись в таблицу.
Файл myfirstplugin.php
В начале приведу конечный код файла, а после прокомментирую то, что мы тут понаписали. Это главный файл нашего плагина.
get_charset_collate(); $tablename = $wpdb->prefix . "myfirstplugin"; $sql = "CREATE TABLE $tablename ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, email varchar(255) NOT NULL, PRIMARY KEY (id) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); > register_activation_hook(__FILE__, 'myfirstplugin_table'); // Добавляем меню function myfirstplugin_menu() < add_menu_page("Мой первый плагин", "Мой первый плагин", "manage_options", "myfirstplugin", "displayList", "dashicons-email-alt"); add_submenu_page("myfirstplugin", "Все подписчики", "Все подписчики", "manage_options", "allentries", "displayList"); add_submenu_page("myfirstplugin", "Добавить подписчика", "Добавить подписчика", "manage_options", "addnewentry", "addEntry"); remove_submenu_page('myfirstplugin','myfirstplugin'); >add_action("admin_menu", "myfirstplugin_menu"); // Создадим функции вывода списка подписчиков и добавления нового function displayList() < include "displaylist.php"; >function addEntry()
В начале файла в комментариях /* */ необходимо указать данные плагина такие как Название, Описание, Автор, Версия и т. д.
Определяем функцию myfirstplugin_table () , где создаем новую таблицу в БД для хранения подписчиков.
Задаем имя таблицы с префиксом и подготавливаем MYSQL запрос на создание таблицы.
Инклудим файл upgrade.php передаем подготовленный запрос в функцию dbDelta () .
И вешаем функцию myfirstplugin_table() на хук register_activation_hook() .
Теперь добавим меню и подменю в админке для нашего плагина.
Мы создадим отдельный пункт в панели администратора, иконку для пункта мы возьмем из стандартного набора https://developer.wordpress.org/resource/dashicons/#email-alt
Обратите внимание, что в методе add_submenu_page() мы вызывали функции displaylist() и addEntry(), их мы создали в конце.
Кстати, если сейчас прейти в раздел плагины, мы уже увидим наш плагин в списках установленных.
Пока не будем активировать его, а перейдем к созданию следующих файлов.
Файл displaylist.php
Создадим в папке нашего плагина файл displaylist.php, в нем мы будем извлекать данные из нашей таблицы myfirstplugin, выводить их на экран и удалять по нажатию на ссылку «Удалить».
prefix."myfirstplugin"; // Удаляем подписчика if(isset($_GET['delete_id']))< $delid = $_GET['delete_id']; $wpdb->query("DELETE FROM ".$tablename." WHERE id SELECT * FROM ".$tablename." order by id desc"); if(count($entriesList) > 0)< $count = 1; foreach($entriesList as $entry)< $id = $entry->id; $name = $entry->name; $email = $entry->email; echo " ".$count." ".$name." ".$email." Удалить "; $count++; > >else< echo "Нет подписчиков "; > ?> table>
Файл addentry.php
Дальше создаем файл addentry.php, который отвечает за добавление записей в базу данных. Он буде выводить html форму, а при нажатии кнопки «Сохранить», отправлять данные в базу.
prefix."myfirstplugin"; if($name != '' && $email != '')< // Проверяем по полю email есть ли такой подписчик $check_data = $wpdb->get_results("SELECT * FROM ".$tablename." WHERE email='".$email."' "); if(count($check_data) == 0)< $insert_sql = "INSERT INTO ".$tablename."(name,email) values('".$name."','".$email."') "; $wpdb->query($insert_sql); echo "Подписчик добавлен!"; > > > ?> <h1>Добавить подписчикаh1> <form method='post' action=''> <table> <tr> <td>Имяtd> <td><input type='text' name='name'>td> tr> <tr> <td>Emailtd> <td><input type='text' name='email'>td> tr> <tr> <td> td> <td><input type='submit' name='submit' value='Добавить'>td> tr> table> form>
Работа с плагином
Теперь вернемся в список наших плагинов и нажмем «Активировать».
Теперь у нас есть пункт в админке и мы сможем удобно работать с нашим плагином.

Совсем простой плагин
Кстати плагин не обязательно должен иметь пункт в меню, добавлять таблицу в базу данных и состоять из нескольких файлов.
Я сначала не хотел, но решил привести пример совсем простого плагина состоящего из одного файла и нескольких строчек кода.
Для примера добавим внизу каждой записи блога текст «Спасибо, что прочитали до конца!». Это конечно можно сделать прямо в шаблоне или в файле functions.php, но тогда мы будем завесить от темы, поэтому это удобней реализовать в виде плагина.
Назовем плагин «Говорим спасибо», для его реализации нам понадобиться небольшой файл содержащий следующий код:
Спасибо, что прочитали до конца!'; >
Сохраните файл wp-content/plugins/thanks/thanks.php и все, плагин готов. Остается только активировать его и теперь после каждого текста в посте появляется нужная нам запись.
Категории
Свежие записи
- Импорт/экспорт Linux WSL
- Не печатаются заглавные буквы в PowerShell
- 1С-Битрикс: Ошибка авторизации! Срок действия пароля истек, необходимо сменить пароль.
- Несколько конфигураций для проекта Django
- Django inclusion_tag с разными шаблонами
- Декоратор @property в моделях Django
Разработка плагина для WordPress
В этом уроке – основы создания плагина для WordPress. Конечно, на разработку некоторых плагинов могут уйти недели, но уже в конце этого урока вы сможете создать свой собственный плагин.
Если вам требуется разработка плагина на заказ для WordPress или для WooCommerce, то я и моя команда будем рады вам помочь, для этого напишите нам.
Нельзя просто взять и написать плагин для 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 '#wpadminbar '; // выводим стили }
По сути это готовый код и если вы отправите его в functions.php , то всё будет отлично работать.

Но мы же пишем плагин, поэтому этот код держим рядом и переходим ко второму шагу.
Создание плагина
Есть два варианта:
- это когда вы просто создаёте PHP-файл с уникальным названием и отправляете его в папку wp-content/plugins ,
- либо, если вы считаете, что ваш плагин будет состоять из нескольких файлов, да ещё и содержать какие-то ресурсы, типо CSS, JS и изображений, то тогда мы этот файл еще и помещаем в папку с таким же названием.
В общем либо /wp-content/plugins/misha.php , либо /wp-content/plugins/misha/misha.php (рекомендуется).
Однако после того, как вы всего лишь создадите эти файлы, ничего не произойдёт, поэтому добавьте в главный файл плагина (ну он сейчас один) эти строчки:
/* Plugin name: Мишин плагин */

Поимимо «Plugin name» у плагинов есть и другие метаданные, давайте их разберём подробнее.
Метаданные плагина
В свой главный файл плагина теперь отправляем что-то в этом духе:
/* * 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.
Окей, с созданием плагинов разобрались, а как насчёт создания темы для WordPress? Вот это уже посложнее, а разобраться вам поможет мой видеокурс!
Миша
Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.
Пишите, если нужна помощь с сайтом или разработка с нуля.
- Вступление
- Пишем плагин
- Метаданные
- register_activation_hook()
- register_deactivation_hook()
- register_uninstall_hook()
Комментарии — 13
Михаил Д. 5 Мар 2020
Все очень просто, пока не попробуешь сделать что-то действительно нужное, что потребует зарегистрировать кастомный тип данных, отобразить таблицу с записями этого типа, обработать пагинацию, создать редактор, отличающийся от дефолтного, прописать балк-функции и еще несколько нужных вещей. Но тогда уже заголовок не такой кликбейтный получится, да.
Миша 6 Мар 2020
Кликбейт наше всё
Сергей 11 Мар 2020Спасибо за ваши статьи, всегда выбираю их из списка поисковиков при том или ином вопросе. Доступный язык изложения, нет лишней «воды», и все коды работают после прочтения материала.
Миша 11 Мар 2020
Спасибо! Приятно слышать
Сергей 25 Апр 2020Миша, научи, пожалуйста, как зарабатывать на разработке под WordPress. Рынок переполнен, люди работают за еду.
Как создать плагин для WordPress за 5 минут

Прямо сейчас мы создадим свой собственный плагин для WordPress за 5 простых шагов. На все про все у нас уйдет не больше пяти минут. Если Вы готовы к таким бешеным скоростям, пристегивайтесь и поехали.
Шаг первый: получаем доступ к файлам
Нам необходимо получить доступ к файлам нашего сайта. Обычно это делается через файловый менеджер хостинга или FTP-клиент.
Шаг второй: находим папку с плагинами
После того как мы получили доступ к нашим файлам, нужно найти папку plugins. Там-то и лежат все WordPress плагины. Папка plugins находится внутри wp-content, а wp-content лежит прямо в корне сайта (там где .htaccess, robots.txt и wp-config.php).
Шаг третий: создаем плагин
В нашем случае (учебном варианте) плагин будет добавлять какой-то произвольный JavaScript код на сайт. Поэтому в папке plugins создадим папку add_my_js, а в ней add_my_js.php. Если смотреть от корня сайта, путь до нашего плагина будет такой:
Шаг четвертый: указываем информацию о плагине
Внутри нашего файла add_my_js.php необходимо заполнить некоторую информацию в виде закомментированного участка кода, дабы WordPress смог увидеть наш плагин и вывести его на странице с другими плагинами.
Для этого помещаем следующее содержимое в наш плагин:
Сохраняем файл и идем на страницу с плагинами. Обновляем страницу и видим наш плагин:

Правда пока этот плагин ничего не делает, давайте добавим функционала.
Дополнение к четвертому шагу
Кроме Plugin name (в комментариях) в самом начале можно указать еще несколько атрибутов.

И тогда у плагина появится дополнительное описание на странице с другими плагинами:

Обязательный параметр лишь Plugin name, остальные вариативные. С полным списком метаданных плагина можно ознакомиться на сайте в документации WordPress.
Шаг 5: добавляем функционал
Наш плагин будет добавлять какой-то JavaScript код в административной панели нашего сайта. Для этого давайте поместим в наш файл add_my_js.php следующее содержимое:
Давайте объясним что мы тут сделали. Внутри нашего плагина мы объявили обычную функцию и привязали ее к хуку admin_head. Поэтому, плагин будет работать только в административной панели. Сама функция вызывает JavaScript-код, который выводит текстовое сообщение в консоль.
Как видите, мы пишем тут самый обычный PHP-код, с которым постоянно сталкиваемся в functions.php в самых разных темах. Поэтому создание плагина ничем не отличается от написания кода в functions.php. Вы тут так же сможете объявлять разные хуки с помощью которых можно творить самые разные вещи, например, создавать страницы и выводить их в административной панели.
Теперь давайте зайдем в административную панель, откроем консоль и проверим наш плагин (не забудьте активировать плагин и страницу перезагрузить):

Как видите, все прекрасно работает! Спасибо за внимание.
Создание плагина для WordPress — Видеоуроки

Предлагаю вашему вниманию краткий и, конечно, бесплатный видеокурс по созданию плагина для WorPress. Плагин будем учиться создавать на примере реальной задачи: необходимо интегрировать платежную систему Интеркасса в блог.
Видеоуроки предназначены для начинающего веб-мастера и поясняют основные принципы самостоятельной разработки плагина для WordPress.
- С чего начать разработку плагина.
- Что такое хуки, экшены и фильтры.
- Как сделать страницу настроек плагина в админке блога.
- Принципы программирования на PHP функционала плагина.
Первый видеоурок
Второй видеоурок
Третий видеоурок
Четвертый видеоурок
Пятый видеоурок
В исходниках плагина присутствуют определенные ошибки и неточности. Я постарался устранить все скользкие моменты и выложил в бесплатный доступ плагин и подробную инструкцию по работе с ним. Кроме того, я сделал платную версию плагина, где реализовал проверку адреса эл. почты покупателя. Кто хочет быстро сделать прием платежей через интегратор платежный систем на своем блоге — добро пожаловать на страницу плагина.
- Первый видеоурок.
- Второй видеоурок.
- Третий видеоурок.
- Четвертый видеоурок.
- Пятый видеоурок.
- WordPress
- wordpress plugin
- видеоуроки
