Современные системы управления контентом (Content management system, CMS) или по-простому «движки» сайтов обладают достаточно мощным функционалом. Однако даже его далеко не всегда хватает, чтобы удовлетворить все требования пользователей. Поэтому большинство CMS имеют механизм расширения и изменения своих возможностей на основе плагинов. WordPress не исключение.
К слову, именно лёгкость расширения и изменения функционала при помощи механизма плагинов во многом определила его популярность.
В настоящее время уже существует поистине огромное количество плагинов способных решать самые разнообразные задачи. Поэтому, в большинстве случаев, писать свой плагин нет необходимости. Можно подобрать готовое решение.
Однако даже при всём многообразии готовый плагин для той или иной конкретной задачи можно подобрать далеко не всегда.
И тогда возникает необходимость написания собственного плагина.
Перед тем как приступить к написанию плагина необходимо чётко определиться с задачей, которую будет решать плагин и придумать для него уникальное имя. Уникальность имени можно легко проверить с помощью поиска в репозитории плагинов. Настоятельно рекомендуется давать плагину имя, которое так или иначе связано с решаемой им задачей.
После того как определена задача и выбрано имя плагина можно приступать к созданию его каркаса.
Для этого откройте папку wp-content\plugins и создайте там отдельную папку, которая должна назваться также как и создаваемый плагин.
Внутри этой папке необходимо создать следующие файлы и папки.
- Имя_плагина.php – главный файл плагина;
- readme.txt – файл readme. Он содержит информацию о плагине в стандартной форме. Если предполагается последующее размещение плагина в репозитории, его наличие обязательно;
- assets – папка с подключаемыми файлами. Содержит подпапки css, img и js;
- includes – папка с файлами php.
В случае, если плагин не имеет сложного пользовательского интерфейса или не содержит сложной программной логики, папки assets и includes могут отсутствовать и весь код плагина можно разместить в главном файле. Однако делать это крайне не желательно.
В главный файл плагина необходимо включить информацию о нём в следующем формате.
<?php /* Plugin Name: Название плагина Description: Описание плагина Version: 1.0 Author: Имя автора Author URI: адрес сайта разработчика Plugin URI: адрес страницы плагина */ ?>
Если Вы пишите название или описание плагина на русском языке, то необходимо чтобы главный файл имел кодировку UTF-8.
Также «кодекс» WordPress требует указания лицензии в главном файле плагина. Обычно плагины распространяются по лицензии GPL либо совместимой с ней.
В качестве примера можно привести следующий текст для главного файла плагина.
<?php /* Plugin Name: My First Plugin Description: Мой первый плагин Version: 1.0.0 Author: Стрелец Coder Author URI: http://streletzcoder.ru Plugin URI: http://streletzcoder.ru */ ?> <?php /* Copyright 2015 Стрелец Coder (email: example@example.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ ?>
Если всё выполнено правильно, то наш плагин можно будет найти на странице со списком плагинов в админ панели.
Пока этот плагин не выполняет никаких функций. Но, несмотря на это его уже можно активировать (и потом деактивировать), удалить и даже изменить в стандартном редакторе, который встроен в WordPress.
С подобных заготовок начинается написание любых плагинов для WordPress независимо от сложности и решаемых задач.
После того как будет готов каркас плагина можно приступать к реализации его функционала. Но, это уже тема для отдельной статьи (и даже не одной).