WordPress разработка плагина
Нельзя просто взять и написать плагин для WordPress? – можно!
Сначала может показаться, что создание плагина для WordPress — это что-то невероятно сложное и это нужно прямо конкретно изучать, но на самом деле, уже прочитав этот пост, вы сможете создать свой собственный плагин.
На самом деле всё зависит от задач, которые выполняет ваш плагин — если он просто добавляет несколько строчек CSS в админку, то это займёт от силы 10 минут, а если вы создаёте плагин кэширования или резервного копирования сайта, то это уже другой разговор.
Например в начале этого года один мой приятель решил создать плагин, связанный с SEO и фильтрацией товаров, так его компания выделила ему 80к бюджета и дала два месяца на разработку.
Шаг 1. Определиться с тем, какие задачи будет выполнять плагин
Скажу так, код, который находится в плагине, очень схож с тем кодом, который размещают в functions.php . То есть вы можете потренироваться с готовыми хуками.
Ну раз уже я заговорил о произвольном CSS коде, то эту цель и будет выполнять мой плагин. Например я просто покрашу верхнюю панель в админке в другой цвет. CSS я вставлю прямо через тег, используя хук admin_head .
По сути это готовый код и если вы отправите его в functions.php , то всё будет отлично работать.
Но мы же создаём плагин, поэтому этот код держим рядом и переходим ко второму шагу.
Если же ваш плагин будет выполнять более сложные задачи, состоять из нескольких файлов и содержать классы, то что вы вообще в этом уроке забыли?
Шаг 2. Файлы плагина
Есть два варианта — это когда вы просто создаёте PHP-файл с уникальным названием и отправляете его в папку wp-content/plugins , либо, если вы считаете, что ваш плагин будет состоять из нескольких файлов, да ещё и содержать какие-то ресурсы, типо CSS/JS/картинок, то тогда мы этот файл еще и помещаем в папку с таким же названием, короче говоря:
/wp-content/plugins/misha.php либо /wp-content/plugins/misha/misha.php
Шаг 3. Метаданные плагина
В свой главный файл плагина теперь отправляем что-то в этом духе:
На всякий случае остановлюсь на паре параметров, ну мало ли:
Plugin Name (единственный обязательный параметр!) Название плагина, как видите можно писать на русском. Plugin URI Если у вашего плагина в интернете есть страница с описанием или документацией, то неплохо бы тут указать её URL. Description Ну как бы описание. Version Версия плагина. Да, туториал совсем для новичков, поэтому добавлю, что например вы запустили свой плагин с версией 1.0 и люди пользуются, а потом поменяли какой-то код внутри своего плагина, а значит и его версия изменилась,
например на 1.1 Author Вы. Author URI Ссылка на ваш сайт или… страницу вк. License Сам WordPress выпускается под лицензией GPL, возможно вы знаете, но также подразумевается, что все плагины и темы под WordPress тоже должны использовать эту лицензию.
Так как это урок для начинающих, на этой ноте я буду закругляться, а на видос:
Продолжение по теме создания плагинов
Впервые познакомился с WordPress в 2009 году. С 2014 года меня можно встретить на WordCamp по всему миру — официальной конфе по WordPress, иногда там выступаю, но с 2020 выступаю только на тех, которые сам организовываю. Также периодически школа Epic Skills и LoftSchool приглашают меня вести у них уроки/вебинары.
Если вам нужна помощь с вашим сайтом или может даже разработка с нуля — пишите мне.
10 лучших WordPress-плагинов для создания посадочных страниц
В интернет-маркетинге, посадочная страница ( которую также зачастую называют «страница привлечения лидов» или «лэндинг» ) представляет собой отдельную веб-страницу, которая отображается посетителю после нажатия по рекламе или по ссылке на странице результатов поиска ( SERP ) в Google или других системах.
На посадочные страницы часто ссылаются из социальных сетей, email-рассылок или рекламных кампаний в поисковых системах, чтобы повысить эффективность рекламы. Главная цель посадочной страницы в том, чтобы конвертировать посетителей сайта в покупателей или как минимум лидов, с которыми можно будет поработать в дальнейшем.
Сегодня мы хотим представить вам подборку из 10 лучших WordPress-плагинов для создания посадочных страниц, которые помогут вам раскрутить собственный бизнес и увеличить доход. Ознакомьтесь с подборкой, и расскажите нам, что вы думаете по поводу представленных плагинов! Наслаждайтесь!
1. Landing Pages
Этот плагин позволяет создавать посадочные страницы ( или страницы-заглушки ) для сайта на CMS WordPress . Он предоставляет владельцам сайтов возможность отслеживать показатели конверсии, проводить сплит-тестирование. При разработке плагина особое внимание уделялось внутренней оптимизации сайтов, за счет чего он поможет вам увеличить количество лидов и конвертировать их в постоянных клиентов!
2. Ultimate Landing Page
Данный плагин включает в себя конструктор посадочных страниц, который позволит вам создать заглушки с высоким показателем конверсии, и при этом вам не придется писать ни строчки кода! Учитывая наличие множества готовых шаблонов, вы можете быстро повысить показатели вашего сайта. Не забудьте протестировать несколько шаблонов, чтобы понять, какой из них лучше подходит вашему сайту или продукту.
3. Ultimate Coming Soon Page
Ultimate Coming Soon Page поможет быстро и просто настроить страницу с оповещением о скором открытии или запуске вашего проекта. Плагин Ultimate Coming Soon Page будет работать с любой темой оформления WordPress .
Посетители, которые не авторизовались на сайте, будут видеть именно эту страницу, в то время как администрация и сотрудники смогут просматривать обычную версию сайта и использовать консоль для настройки или публикации контента.
4. Beaver Builder
Beaver Builder – это drag and drop конструктор страниц, который работает через интерфейс WordPress и позволяет создавать красивые шаблоны и посадочные страницы без необходимости писать какой-либо код.
Стоит отметить, что все элементы страниц, созданных при помощи Beaver Builder , полностью адаптивны, а, значит, будут прекрасно смотреться на любых экранах и любом разрешении. Просто перетащите несколько элементов на страницу, и они автоматически подстроятся под размер экрана. Если вы не любитель адаптивного дизайна, то этот функционал по желанию можно отключить.
5. Coming Soon Page
Инструмент, который позволит « включать » на сайте режим технического обслуживания или показать страницу с оповещением о скором запуске проекта.
6. Landing Pages Builder
Создавайте посадочные страницы, проводите A/B-тестирование и многое другое. Привлекайте новых лидов, повышайте уровень конверсии и управляйте вашими посадочными страницами при помощи единого интерфейса. Теперь вы можете запускать рекламные объявления с функцией автоматической оптимизации для получения лучшего результата.
7. Bulk City Landing Page Creator
Плагин создает несколько страниц на WordPress , в заголовках и содержимом которых будет упоминаться заданный вами город. Плагин умеет работать с родительскими страницами, шаблонами, а также с заголовками и контентом страниц. Количество создаваемых страниц напрямую зависит от количества строк в тексте с указанием города и штата ( пример строки: Athens,GA ).
8. Site Offline or Coming Soon
Вы можете использовать этот плагин для включения/выключения режима « оффлайн » на сайте. Если включить режим « оффлайн », то обычные посетители с помощью страницы-заглушки будут оповещены о ведущихся на сайте технических работах, в то время как администраторы смогут видеть полную версию сайта. Удобный плагин для тех, кому нужно оповестить пользователей о скором запуске проекта.
9. Coming Soon Page
Coming Soon Page – отличный способ дать понять, что ваш проект скоро начнет свою работу. Когда плагин Coming Soon Page активирован, он позволяет вам собирать email-адреса заинтересованных посетителей. Кроме того, следует отметить, что этот плагин не привязан к определенной теме оформления, и поэтому будет прекрасно работать с любым установленным шаблоном.
10. Maintenance Page
Данный плагин позволит вам без труда установить на сайт страницу с информацией о технических работах или заглушку с обратным отсчетом до запуска проекта. Maintenance Page можно использовать при исправлении критических ошибок или обновлении сайта. Встроенный функционал плагина позволит отобразить логотип, фоновое изображение, кнопки социальных сетей, изменять цвета фона и элементов, предоставить посетителям форму подписки, а также многое другое.
Данная публикация представляет собой перевод статьи « 10 BEST WORDPRESS PLUGINS FOR CREATING LANDING PAGES » , подготовленной дружной командой проекта Интернет-технологии.ру
ez code
Просто о сложном.
Создание плагина для WordPress. Часть 1.
Одна из главных причин большой популярности WordPress — это простота расширения и изменения системы под свои нужды с помощью плагинов.
На первый взгляд создание плагина может показаться трудной задачей, но на самом деле все проще, чем вы думаете. Это первый урок серии «Создание плагина для WordPress», в которой будут рассмотрены важные принципы и составные части данного процесса. По завершении уроков вы будете готовы к самостоятельным экспериментам по созданию WordPress плагинов, опираясь на общепринятые правила сообщества системы.
Что такое плагин для WordPress
Это PHP код, который изменяет или расширяет начальный функционал системы.
WordPress предоставляет простой, но гибкий API для создания плагинов. Вот некоторые преимущества, которые предлагает WordPress разработчикам:
- Нет необходимости изменять ядро системы для получения дополнительной функциональности. Это значит плагин будет работать даже после обновления системы.
- В WordPress есть механизм деактивации плагина, когда ошибка может привести к краху сайта.
- Модульность кода системы упрощает обновление и сопровождение.
- Функции плагинов никак не связаны с темами.
- Один плагин может быть использован с разными темами и иметь независимые от дизайна функции.
- Код плагина может реализовывать современные техники программирования, ООП например, это никак не повлияет на использование родных функций, классов и интерфейсов WordPress.
Важная задача, которую мы решим в этом уроке — создание фундамента для плагина. Наш плагин должен соответствовать некоторым правилам, чтобы WordPress мог распознать его. В то же время мы должны придерживаться общепринятых принципов разработки плагинов, чтобы избежать конфликтов с другими плагинами на сайте.
Название и файлы плагина
Прежде всего вы должны убедиться, что название вашего плагина уникально. Даже если вы не собираетесь выкладывать свое творение на всеобщее обозрение, вы должны быть уверены, что на сайте не возникнет ситуации использования двух плагинов с одним именем. Воспользуйтесь поиском по плагинам WordPress, перед выбором названия.
Для уникальности названия многие разработчики добавляют префикс — инициалы автора или некоторая аббревиатура. Префикс может быть использован везде — в именах файлов, функций, классов, переменных и т.д. Это поможет избежать возможных конфликтов с другими плагинами, темами и самим ядром системы.
Пример. Пусть наш плагин называется “Hello World Plugin” и для увеличения вероятности уникальности названия добавим префикс “My super prefix”, сокращенный до “MSP”. Таким образом мы получим уникальное название “MSP Hello World Plugin”. Поиск по плагинам подтверждает это.
Следующий шаг — создание файлов плагина. Рекомендуется располагать плагин в отдельной папке внутри специальной директории для плагинов. Имя папки должно соответствовать названию плагина, в нашем случае можно назвать ‘msp-helloworld’. Папка должна содержать главный файл плагина с таким же именем: ‘msp-helloworld.php’.
Так же «кодекс» WordPress рекомендует создать readme.txt файл. В этом файле содержится информация о плагине в стандартной форме. Если вы собираетесь выложить свой плагин в репозиторий плагинов, то наличие этого файла обязательно.
Если ваш плагин использует множество файлов, загружает картинки, css или JavaScript, вам необходимо хранить их в подпапках вашего плагина. Правильная организация структуры файлов — признак хорошего тона. Мы будем придерживаться следующего шаблона:
Заголовок плагина
У каждого плагина обязательно должен быть заголовок, это помогает WordPress распознать плагин и вывести информацию о нем на странице управления плагинами.
Заголовок — это комментарий PHP, расположенный вначале главного файла плагина:
Информация из заголовка будет показана на странице управления плагинами WordPress
Информация о плагине
Порядок строк не важен, кодировка файла должна быть UTF-8.
Путь к файлам
Так как мы используем разные файлы для нашего плагина, мы должны определить правильный путь к ним. Папка wp-content может быть перемещена из стандартного положения, поэтому жесткое объявление путей не подходит, они должны определяться автоматически.
В WordPress есть две функции plugin_dir_path и plugin_dir_url для определения адресов файлов:
Этот код определяет путь к папке плагина внутри директории WordPress и объявляет константы, содержащие его. После мы можем использовать эти константы вместе с известными относительными путями к подпапкам, например: MSP_HELLOWORLD_DIR.’assets/img/image.jpg’.
Используя эти константы мы также можем подключать необходимые файлы в главном PHP файле:
Состояние плагина
После установки плагин может быть в активном или деактивированном состоянии.
Если плагин активирован, то WordPress будет выполнять его код при каждой загрузке страницы.
Плагин также можно деактивировать, это значит файлы плагина остаются на месте, но код не исполняется (плагин можно удалить полностью, т.е. удалить его файлы из папки плагинов).
WordPress отслеживает состояние плагина и исполняет необходимый код, когда состояние меняется. Если какой-то код предназначен для выполнения только при активации или деактивации, можно исполнять его только в эти моменты, а не при каждой загрузке страницы.
Например, если плагин хранит свои настройки в базе данных, необходимо удалить их из базы при удалении плагина. Как это сделать?
Для выполнения действий при активации и деактивации мы должны зарегистрировать так называемые ‘activation hook’ и ‘deactivation hook’. Таким образом мы сообщим WordPress какую функцию необходимо выполнить при том или ином событии. Пример:
Для выполнения действий при удалении плагина есть 2 способа.
Первый — это создать файл uninstall.php в главной папке плагина (вместе с главным файлом и readme.txt) и включить в него необходимый код. Если uninstall.php существует, WordPress автоматически выполнит его при удалении плагина. Второй способ — зарегистрировать uninstall hook in так же как события для активации и деактивации. Пример:
Важно, что сработает только один из способов, если существует uninstall.php, то зарегистрированная функция не сработает.
Общие правила
Подводя итоги, сформулируем несколько правил, которых необходимо придерживаться при создании плагина для WordPress:
- Придумайте уникальное название
- Создайте отдельную папку для плагина
- Соблюдайте структуру хранения файлов, создайте подпапки для PHP файлов, переводов и других файлов
- Создайте главный файл плагина и заполните заголовок плагина.
- Создайте readme.txt
- Используйте функции для определения путей к файлам
- Создайте дополнительные PHP файлы и подключите их в главном
- Создайте функции для обработки активации и деактивации
- Создайте скрипт для удаления
Заключение
После всех описанных шагов, вы будете готовы писать основную часть плагина и заставить его делать что-либо. В следующих статьях мы продолжим знакомиться с принципами создания плагина для WordPress. Следующая часть урока.
Разработка плагинов WordPress под заказ
Хотите заказать плагин WordPress с уникальным функционалом, придуманным вами для конкретного проекта или сетки ваших сайтов?
Предлагаем вам свои наработки и знания в области создания плагинов для CMS WordPress!
Чтобы не убеждать вас тысячей слов обратиться именно к нам, лучше посмотрите на уже готовые разработки в этом магазине. Мы умеем делать плагины!
Права на разработку принадлежат только вам. Конфиденциальность данных гарантируем.
При необходимости поможем создать тех. задание (ТЗ). Поэтому можете не беспокоиться, что не знаете нюансы работы самого «движка» WordPress.
Алгоритм сотрудничества
Как будет идти процесс от вашего первого обращения и до финального релиза Продукта:
- Пишите нам на [email protected] о желании создать плагин. Указываете его цель/назначение и как вы видите функциональность. Указываете свои контакты Telegram/Skype или другие.
- При необходимости мы корректируем ТЗ исходя из опыта и оцениваем работу.
- Согласовываем с вами конечную стоимость и сроки, прочие рабочие моменты.
- Вы получаете готовую разработку.
Бонус
Мы предлагаем разместить разработанный готовый плагин у нас в магазине. Есть вся необходимая инфраструктура. Продажи вы будете видеть у себя в специальном кабинете.
Опять же, все по вашему желанию.
Цена на разработку
Озвучить цену можно только после ознакомления с ТЗ.
Создание плагина для WordPress
WordPress CMS — это удобная платформа для разработки Web-сайтов, пользующаяся большой популярностью среди программистов и Интернет-пользователей. Но, к сожалению, ее базовая функциональность ограничена и может предложить разработчику только стандартный набор опций. Поэтому для расширения возможностей WordPress используются специальные модули (плагины), которые позволяют модифицировать базовую систему для создания Web-сайтов, отвечающих специфических требованиям проекта.
Плагин для WordPress – это небольшая программа, которая устанавливается в систему в виде отдельного блока и помогает расширить ее возможности. Проще говоря, это дополнение к базовой программе, целью которого является улучшение функциональности Web-сайта или внедрение дополнительных возможностей. Основным преимуществом плагинов является то, что при их внедрении не требуется вносить изменения в базовую программу. Кроме того, при обновлении базовой системы плагины не будут затронуты и продолжат функционировать в прежнем режиме.
В данной статье мы рассмотрим процесс создания плагинов для WordPress и несколько важных аспектов, которые нужно учитывать при разработке собственных плагинов. Для создания собственного плагина для WordPress потребуется выполнить следующие действия:
- присвоить плагину уникальное название;
- создать отдельный каталог для размещения плагина;
- в этом каталоге организовать определённую файловую структуру для хранения PHP-файлов и других файлов плагина;
- создать основной файл для плагина;
- создать файл readme.txt;
- реализовать функции распознавания путей к различным файлам;
- создать дополнительные PHP-файлы и подключить их к главному файлу плагина;
- создать функции активации/деактивации плагина;
- прописать PHP-сценарий для удаления плагина.
Название и файловая структура плагина
Плагин для WordPress должен иметь уникальное название, чтобы избежать возникновения конфликтов с другими плагинами, уже установленными в системе, или её ядром. Многие пользователи придают уникальность названию путем добавления префиксов или инициалов. Например, плагин должен носить название HelloWorldPlugin. Тогда будет достаточно просто добавить префикс MSP (от MySuperPrefix), чтобы, в итоге, получить уникальное имя MSPHelloWorldPlugin. Для проверки можно попытаться найти плагин с таким именем в списке плагинов, уже доступных для WordPress.
Плагин должен располагаться в специально созданном для него каталоге внутри глобального каталога, используемого для хранения плагинов. При этом имя каталога должно совпадать с названием плагина. В нашем примере будет создан каталог msp-helloworld, поэтому в каталоге обязательно должен быть размещен главный файл плагина с идентичным названием msp-helloworld.php.
В случае если впоследствии планируется выложить плагин в хранилище, дополнительно необходимо будет создать файл readme.txt, в котором будет содержаться вся необходимая информация о плагине.
Если же в плагине будут использоваться различные картинки, Java Script или css-файлы, то в основном каталоге плагина следует создать подкаталоги для их хранения. В итоге должна получиться примерно следующая структура каталогов для размещения плагина, как показано на рисунке 1.
Рисунок 1. Файловая структура для хранения плагина
В начале основного файла плагина обязательно должен располагаться заголовок – PHP-комментарий в обязательной кодировке UTF-8. Это необходимо для того, чтобы система WordPress могла распознать плагин и вывести информацию о нём, например, название, описание, версию, автора и т.д. Количество комментариев при этом может быть неограниченно. На рисунке 2 показан пример вывода информации о плагине на странице управления в WordPress.
Рисунок 2. Информация о плагине
Очень важно, чтобы WordPress могла правильно определить путь к дополнительным файлам, используемым в плагине. Так как каталог wp-content можно переносить, то определение пути к нему должно выполняться автоматически, независимо от места фактического расположения каталога.
Для этих целей можно использовать функции WordPress: plugin_dir_path и plugin_dir_url . Обе эти функции помогают распознать путь к каталогу плагина, расположенному внутри основного каталога WordPress и создают константы, содержащие информацию о месте расположения плагина. В дальнейшем можно использовать данные константы вместе с относительными путями к различным каталогам, содержащим дополнительные файлы плагина. Кроме того, использование этих констант позволит подключить нужные файлы в основном PHP-файле.
Возможные состояния плагина
После установки плагина следует сразу проверить его состояние, так как он может находиться как в активированном, так и в деактивированном состоянии. Если плагин находится в активированном состоянии, то каждый раз при загрузке страницы WordPress будет его выполнять. Если же плагин деактивирован, то при загрузке страницы он, соответственно, исполняться не будет.
WordPress следит за состоянием плагина и вызывает его функциональность в зависимости от текущего состояния. Например, если какой-либо код предназначен для исполнения только в момент активации/деактивации плагина, то он будет вызываться только при срабатывании данного события, а не при обновлении или загрузке страницы. Изменение состояния плагина выполняется путём удаления его настроек, хранящихся в базе данных.
Существуют так называемые хуки активации ( activationhook ) и деактивации ( deactivationhook ), с помощью которых мы сообщаем WordPress, в каком случае должна быть вызвана та или иная функция плагина. Сначала следует зарегистрировать хуки, а затем прописать действия, которые должны выполняться плагином для WordPress при наступлении того или иного события.
Также стоит рассмотреть, как происходит удаление плагинов из WordPress. Чтобы удалить плагин для WordPress, следует удалить из общего каталога плагинов все файлы, относящиеся к нему. Существуют два способа сделать это:
- необходимо поместить файл uninstall.php в основном каталоге плагина (где располагаются его главный файл и файл readme.txt) и прописать в нем нужный код, тогда при удалении плагина WordPress автоматически выполнит его файл uninstall.php.
- можно воспользоваться хуком uninstallhookin , его следует зарегистрировать и прописать действия, которые должны быть выполнены при удалении плагина.
Стоит учитывать, что система удаления плагинов в WordPress построена так, что будет использоваться только один из вышеуказанных способов. Поэтому если в плагине уже имеется файл uninstall.php, и при этом также зарегистрирован хук uninstallhookin , то при удалении плагина будет вызван только файл, а хук использоваться не будет.
Теперь, когда мы рассмотрели базовые принципы функционирования плагинов, можно переходить к рассмотрению более сложных вопросов. Ключевыми компонентами любого плагина для WordPress являются хуки (hooks), и связанные с ними фильтры (filters) и действия (actions.). Рассмотрим каждое из этих понятий в отдельности.
Система хуков
Хук (от англ. hook – крючок) – это тот инструмент, с помощью которого можно модифицировать стандартную функциональность WordPress. Иными словами, это пользовательские функции, привязанные к конкретным системным функциям WordPress. Все существующие хуки занесены в так называемый «кодекс» WordPress. Существует два типа хуков:
- actionhook –хук, который отмечает место в коде, отвечающее за выполнение кода в момент конкретного действия (например, внесение каких-либо данных и сохранение их в базу);
- filterhook – отмечает фильтр, отвечающий за изменение значений (переменных), и в дальнейшем система будет использовать уже измененное значение;
Система WordPress изначально содержит некоторое количество хуков, но можно добавлять дополнительные хуки, чтобы создавать собственные рубрики, блоги, посты и т.д. Создание хуков – это один из этапов в процессе создания собственного плагина в WordPress, с помощью которого мы можем управлять системой и адаптировать её под требования конкретного проекта.
Для начала рассмотрим принцип работы с действиями (actions):
- при помощи хука actionhook , в котором предварительно были прописаны нужные параметры, отметить то место, где должно выполняться действие;
- используя параметры хука, прописать функцию, которая будет отвечать за выполнение необходимых действий;
- зарегистрировать действие, которое должно быть выполнено в момент срабатывания хука.
- в итоге, при загрузке страницы WordPress находит хук, после чего выполняются объявленные в нём действия.
Рассмотрим этот процесс более подробно. Чтобы выполнить первый пункт используется хук do_action
где $tag – это название хука, $arg_1 , $arg_2 , . , $arg_n – это параметры, с которыми будет активирована функция. При этом количество аргументов может варьироваться от 0 до бесконечности.
Следующим шагом является регистрация функции при помощи вызова add_action . Данная функция обязательно должна содержать в себе следующие параметры:
- наименование хука ( $tag );
- название функции, которую необходимо активировать ( $function_to_add ).
Все остальные параметры являются дополнительными и могут быть прописаны в зависимости от требований разработчика (например, порядок исполнения функции $priority или принимаемое функцией количество аргументов $accepted_args_number ).
Чтобы лучше изучить процесс, рассмотрим практический пример. Например, нам требуется, чтобы в нижней части сайта появилось небольшое уведомление. Сначала следует создать функцию вывода строки оповещения и зарегистрировать ее. Для регистрации мы используем хук wp-footer , поскольку он является неотъемлемой частью в использовании любой темы. Как только данный код будет добавлен в файл плагина для WordPress, на странице появится требуемый результат.
Рисунок 3. Плагин WordPress для вывода оповещения внизу страницы
Работа с фильтрами
Теперь рассмотрим, как можно использовать фильтры ( filterhook ), которые во многом похожи на действия ( actionhook ) из предыдущего раздела. Разница заключается лишь в том, что фильтры перед применением могут изменять значения переменных, переданные им хуком. Так, в функцию apply_filter , которая используется для создания хука фильтра, помимо наименования хука ( $tag ) необходимо передать такой параметр, как $value_to_filter . При этом данный параметр может оставаться незаполненным, но он обязательно должен быть обозначен. Все остальные аргументы являются необязательными и используются так же, как и в случае с хуками действия.
Фильтр должен содержать в себе как минимум один аргумент и возвращать измененное значение ( return $value_to_filter ).
Также существует функция add_filter , с помощью которой происходит регистрация функции с наименованием, которое содержится в $function_to_add для хука $tag .
Рассмотрим функцию the_content , которая выводит содержимое записи. В ней можно найти следующий хук, с помощью которого можно легко добавить какой-либо текст в конец поста.
По завершении всех вышеуказанных действий, а также после активации плагина, должен получиться результат, как на рисунке 4.
Рисунок 4. Плагин WordPress для вывода текста в конец поста
Дополнительные действия с хуками
Какие ещё действия можно выполнять с хуками, помимо создания и установки?
Можно удалить определённое действие, относящееся к хуку, с помощью функции remove_action . При этом необходимо указать приоритетность и количество аргументов точно так, как это было обозначено при регистрации хука.
Чтобы удалить все действия, привязанные к хуку, используется функция remove_all_actions . В данном случае, если явно не указать приоритет, то функция удалит абсолютно все действия.
Данные способы также могут быть применены и по отношению к фильтрам. Единственное отличие в удалении хуков действий и фильтров заключается в разных наименованиях функций: action меняется на filter (т.е. вместо remove_action будет remove_filter ).
Можно проверить регистрацию функции для хука, чтобы определить, зарегистрирована ли эта функция для конкретного хука или нет. Для этого используются функции has_action или has_filter . Если функция зарегистрирована, система вернёт результат true , если не зарегистрирована – результат false .
Более того, внутри самой функции тоже можно проверить факт вызова:
Функция current_filter , несмотря на свое название, может применяться как по отношению к фильтрам, так и по отношению к действиям.
Options API
Вся информация о плагине для WordPress заносится в базу данных Options API (API для работы с параметрами), которая упрощает процесс создания, получения, обновления и удаления любых параметров. Более того, API WordPress гарантирует, что пользователи смогут обращаться к данным только корректными способами.
Все настройки Options API хранятся в таблице wp_options, при этом конкретным опциям присваиваются определенные имена. Существуют две наиболее важные функции для работы с опциями:
- get_option — извлекает из базы данных информацию, хранящуюся под определенным именем;
- update_option — служит для обновления в базе данных записи, привязанной к определенному имени (в случае отсутствия данной записи, она создается автоматически).
Эти функции можно использовать как по отношению к единичному аргументу, так и к массивам, благодаря чему под одним конкретным именем можно хранить целый массив данных. Подобная возможность может оказаться очень полезной при разработке плагина, так как различные параметры смогут храниться под общим именем.
Страница настроек плагина
Чтобы проще ориентироваться среди настроек плагина для WordPress, можно создать для него отдельную страницу или сразу несколько страниц, которые будут размещены в административном интерфейсе. Если для управления настройками плагина будет использоваться только одна страница, то ее можно разместить в уже существующем меню – как правило, оно носит название «Settings» (Настройки), при этом в параметре $parent_slug необходимо указать options-general.php. Также существуют функции, которые позволяют зарегистрировать несколько страниц с привязкой к определенному меню (например, add_options_page ).
Что касается создания группы страниц, то тут необходимо учесть следующие правила:
- сначала требуется обозначить главную страницу при помощи функции add_menu_page ;
- потом добавить дополнительные страницы при помощи функции add_submenu_page ;
- при добавлении дополнительных страниц обязательно нужно сделать ссылку на ID главной страницы через параметр $parent_slug .
Settings API
Функциональность Settings API (API для работы с настройками) используется для создания графического интерфейса для изменения настроек плагина. Сначала необходимо зарегистрировать конфигурационный параметр, чтобы получить возможность управлять вводом значений для него. Затем следует создать секцию и поле ввода для этого параметра, как показано ниже:
Следует помнить, что API позволяет указывать пользователей, которые смогут работать с этой настройкой. После завершения процесса регистрации параметр можно вывести на соответствующую страницу с помощью функции, которая располагается внутри тега :
Функция settings_fields раскрывает скрытые поля формы, к которым WordPress обращается в процессе работы. Функция do_settings_sections служит для вывода ранее зарегистрированных полей и секций.
Дополнительную информацию по различным вопросам использования Settings API можно найти в «кодексе» WordPress.
Безопасность
Перед обработкой данных, отправленных пользователем на сервер, необходимо предварительно проверить их на соответствие заданному формату и на наличие скрытого вредоносного кода. Предварительная проверка входных данных – это одно из основных правил безопасности при работе с данными и настройками пользователей. То же самое относится и к данным, которые необходимо извлечь из базы (например, преобразовать HTML-символы для их нормального отображения). Для выполнения подобных задач в WordPress существуют специальные функции.
Другим немаловажным аспектом безопасности является контроль уровня привилегий пользователей. Платформа WordPress предлагает определенные механизмы, которые позволяют управлять правами доступа пользователей. Например, возможность разрешать или блокировать доступ к определенным действиям. Для этого при создании страницы для управления настройками следует присвоить ей определенный уровень доступа (как правило, это manage_options ), что ограничит доступ к ней для пользователей, которые не обладают соответствующими полномочиями.
Создание собственного плагина
Итак, мы рассмотрели базовые действия, которые необходимо выполнить в процессе создания плагина для WordPress. Теперь пора собрать всю информацию и создать собственный плагин WordPress, который будет выводить в конце каждого поста информации об авторе. Но для большей сложности попробуем сделать так, чтобы пользователь мог менять шаблон блока, в котором выводится информация.
Наш плагин для WordPress будет содержать такие файлы, как core.php с вспомогательной функциональностью и admin.php с кодом для административного интерфейса.
Начнем создавать страницу настроек плагина с помощью admin.php (этот файл можно найти в архиве plugin.zip в разделе «Материалы для скачивания»). Для этой цели нужно использовать функцию msp_helloworld_admin_menu_setup , которая отвечает за создание страницы-подпункта меню и должна выполняться в хуке admin_menu .
После этого следует создать форму для редактирования настроек, то есть прописать их в функции msp_helloworld_admin_page_screen . При этом необходимо учитывать, что для корректной работы с настройками тег должен ссылаться на файл options.php. В конце функция msp_helloworld_settings_link должна создать ссылку со страницы управления плагинами на страницу с настройками, как показано на рисунке 5.
Рисунок 5. Страница для управления плагинами
Все без исключения настройки плагина для WordPress должны храниться в едином массиве. Даже если имеется всего одна функция, она также должна быть включена в массив. Для того чтобы занести все настройки в массив, используем функцию msp_helloworld_settings_init , которая должна выполняться в хуке admin_init . Эта функция в свою очередь должна содержать в себе регистрацию других функций, как показано в файле admin.php:
- msp_helloworld_options_validate – данная функция используется для обработки входных данных (обработка выполняется при помощи фильтра wp_kses_post );
- msp_helloworld_authorbox_desc – функция используется для создания текстового описания секции с полем ввода;
- msp_helloworld_authorbox_field – функция служит для отображения поля, в которое и будет вводиться разметка для блока с информацией об авторе.
На рисунке 6 показана готовая страница настроек плагина.
Рисунок 6. Страница настроек плагина
В заключение обратимся к функции msp_helloworld_author_block , которая находится во вспомогательном файле core.php и предназначена для отображения нашего блока с информацией об авторе. Эта функция заменяет такие метки, как [ author_name ], [ author_url ] и [ author_desc ], расположенные в базе данных, на соответствующие значения.
Создав базу для плагина и заполнив её значениями, мы получим готовый плагин для WordPress, который после отображения на странице будет выглядеть примерно так, как показано на рисунке 7.
Рисунок 7. Готовый плагин для WordPress
Заключение
Плагины являются полезным дополнением к WordPress, так как они не только используются для наполнения Web-сайта информацией, но и позволяют расширить возможности основной системы. Большинство разработчиков не могут обойтись только стандартными функциями WordPress, поэтому существует множество плагинов для решения самых разных задач. Но не стоит забывать о том факте, что чрезмерная нагрузка системы различными плагинами может серьезно сказаться на её производительности. Поэтому старайтесь выбирать наиболее оптимальные реализации плагинов, которые будут соответствовать заданным требованиям, но не будут оказывать негативного влияния на работу системы в целом.
Как написать плагин для WordPress
Однажды Вы решили создать свой сайт или блог, а для системы управления Вы выбрали WordPress…Прошло время ваш сайт становится все более и более читаемым и тут, вы поняли, что для ещё большей популярности необходимо добавить немного функционала к сайту или же просто автоматизировать какое-то действие.
Вы идете на «склад» плагинов для wordpress и обнаруживаете, что необходимого плагина для Вас нету. Что же делать? Как быть ? Если вы хотя бы немного знакомы с азами программирования на php, верстке, то Вам не составит труда Самому написать плагин для WordPress.
А теперь отправимся на «кухню» для приготовления нашего плагина.
p.s. Если знаний в php и верстке нету… не расстраивайтесь, попросите кого-либо написать Вам нужный функционал
Прежде чем начать писать плагин необходимо обратится в документацию WordPress где описаны основные принципы написания плагинов и некоторые примеры кода.
Я не буду дублировать эту информацию, а сразу перейду непосредственно к написанию кода.
Напишем простенький плагин, который позволит сохранять и выводить отзывы о Вашем сайте. Конечно, такие плагины уже есть, но для примера сойдет как раз.
Первое, что мы сделаем, это придумаем уникальное название нашему плагину — «AdvUserReviews«.
Далее создадим в директории Вашего сайта «/wp-content/plugins/» новую директорию «advuserreviews». И в ней создадим файл «advuserreviews.php». Это будет основной файл, который будет отвечать за общею инициализацию. (Желательно используйте кодировку для файлов UTF-8).
В самом начале файла необходимо указать основную информацию о плагине
Теперь, если перейти в панель управления, то можно увидеть, что система нашла новый плагин и предлагает его активировать. Но пока что это делать рано.
Наш новый плагин мы будем писать в стиле ООП и вся обработка данных будет находится в одном файле. Создадим основной каркас файла.
Теперь конструктор объекта дополним следующим кодом:
В конструкторе объекта мы используем 3 «хука» или «зацепки» (что это ?): register_activation_hook, register_deactivation_hook и register_uninstall_hook — это функции, которые выполняются при активации, деактивации плагина и его удаления соответственно.
Теперь непосредственно реализуем эти функции.
Переменная $wpdb отвечает за запросы к базе Данных. Функция dbDelta анализирует текущую структуру таблицы, сравнивает ee с желаемой структурой таблицы, и либо добавляет или изменяет таблицу по мере необходимости.
Соответственно, при активации плагина создается структура таблицы для хранения отзывов. При деактивации плагина не происходит никаких действий, а вот при удалении мы удаляем нашу таблицу. Более подробно действия можно понять по исходному коду.
Основная структура нового плагина готова. Теперь необходимо приступить к написанию функциональной части. Для этого в конструктор класса нам необходимо добавить следующие строчки кода:
Разберем подробнее данный участок кода. Начнем с панели администрирования.
Функция «is_admin» проверяет в каком режиме сейчас мы работаем — на сайте или в панель управления.
Далее используется несколько хуков, для функций:
- wp_print_scripts — Добавляем необходимые javascript файлы
- wp_print_styles — Добавляем необходимые стили
- admin_menu — Добавляем новое меню в панели управления
Каждому хуку соответствует реализованный метод в нашем классе. В котором выполняются необходимые операции.
Рассмотрим код для подключения стилей и скриптов
Здесь используются следующие функции.
wp_register_script — Функция служит для регистрации необходимых скриптов и последующего их подключения. Принимает несколько параметров, но основные из их них два: первый параметр — уникальный идентификатор скрипта, второй — путь к файлу скрипта. Третий параметр — зависимости данного скрипта, четвертый — версия скрипта, пятый — где размещать файл скрипта в страницы или же внизу тега .
wp_enqueue_script — Безопасный путь добавления JavaScript в страницу сгенерированную WordPress. Здесь стоит обратить внимание уже на зарезервированных и включенных идентификаторов скриптов в wordpress . Данная функция может принимать как один параметр — зарегистрированное название скрипта или же она может автоматически регистрировать и загружать необходимые скрипты.
Следующие две функции очень похожи на описанные выше, только служат для регистрации стилей и их добавления.
wp_register_style — Регистрация нового стиля.
wp_enqueue_style — Добавление нового стиля.
Далее перейдем к следующему хуку — создание меню в панели администрирования.
Рассмотрим функции для добавления элементов меню.
add_menu_page — Добавляем основной раздел меню. Функция принимиает несколько параметров, а именно:
1 — Название новой страницы
2 — Название раздела в боковом меню
3 — Права доступа
4 — Уникальный идентификатор раздела (slug). Если же следующий параметр — функция — не будет указан, то данный параметр используется, как название вызываемого файла.
5 — Функция для отображения контента выбранной страницы.
6 — Путь к иконке
7 — Расположение в меню
add_submenu_page— Добавление дочернего элемента меню к основному. Функция по параметрам идентична предыдущей, только первым параметром передается уникальный идентификатор или slug родительской страницы.
Теперь, если зайти в панель управления, то мы увидим наше созданное меню.
Далее нам необходимо написать функции для отображения контента созданных страниц. Одна из них будет выводить просто статическую страницу (информация о плагине), другая будет показывать список отзывов и возможность их редактирования и удаления.
Данный код — это основной функционал для управления отзывами на сайте. Особый интерес здесь представляют собой выполнение SQL запросов для получения, обновления и удаления данных.
Например метод $wpdb->get_row — получает одну запись, а метод $wpdb->get_results — группу записей. По умолчанию всегда возвращается объект, но передавая параметр ARRAY_A будет возвращаться массив данных. Более подробно о всех видах SQL запросов в WordPress можно прочитать тут.
Каждое действие зависит от переданного параметра «action», соответственно «edit» -редактирование отзыва, «submit» — сохранение отредактированного отзыва и «delete» — удаление отзыва.
Обмен данными со страницами отображения происходит через свойство объекта «data». Исходный код этих страниц будет выложен в архиве с данным модулем в конце статьи. Тут я их не буду вставлять, так как топик уже оказался достаточно большим.
На этом с панелью администрирования заканчиваем и переходит к отображению и добавлению отзывов со стороны пользователей.
Что бы указать wordpress, когда вызывать наш плагин, необходимо зарегистрировать «shortcode», что и было сделано в конструкторе нашего класса. Подробнее об этом написано здесь.
Теперь на любой странице сайта можно разместить вот такой код [show_reviews] и это заставит выполнить указанную нами функцию (передается вторым параметром). Ниже представлен исходный код данной функции.
В принципе тут ничего сложного нету — делается SQL запрос на выборку данных, если же передан параметр «action», то сначала добавляется новый отзыв. Но стоит обратить внимание на буферизацию вывода. Она необходима для того, что бы получить данные вставляемой страницы.
Вот собственно и все. Теперь можно посмотреть, что у нас получилось. А скачать плагин и исходные коды можно вот тут.
Само собой это только пример создания плагина, но и сойдет как простая гостевушка, если ее немного доработать, например, добавить защиту от ботов и постраничный вывод. Удачного кодинга:)
Форма на сайте:
Панель управления плагином:
delay-delo.com
Блог web-разработчика Алексея Ртищева
Форма поиска
- Главная
- Создание плагина с помощью генератора шаблонов WordPress Plugin Boilerplate
Создание плагина с помощью генератора шаблонов WordPress Plugin Boilerplate
Создание плагина с помощью генератора шаблонов WordPress Plugin Boilerplate значительно экономит время и силы разработчика и в то же время, получаемый код соответствует принципам объектно-ориентированного программирования. В этой статье я подробно опишу, как быстро начать разработку плагинов WordPress. Для создания плагина в любой cms необходимо следовать набору правил, рекомендуемых разработчиками этой платформы. Плагины по функциональности могут отличаться друг от друга и иногда достаточно одного файла, чтобы расширить возможности cms.
Небольшому плагину нет смысла создавать сложную структуру, его легко поддерживать и несложно написать следуя инструкциям wordpress codex. Но, если в дальнейшем планируется расширение функционала или необходимо создание более сложной структуры — рекомендуется организовывать структуру плагина согласно «Best Practices». Я так и делал, пока не нашёл более удобный способ для создания нового плагина — это использование генератора шаблонов плагина — WordPress Plugin Boilerplate.
Генератор создаёт чистый шаблон на основе принципов объектно-ориентированного программирования, и включает в себя все необходимые элементы для создания административной части и локализации.
В этой статье я расскажу как создать чистый шаблон в WordPress Plugin Boilerplate и покажу начальные шаги разработки. Этого материала будет достаточно тем, кто уже имеет опыт разработки плагинов, а для новичков в следующих статьях будут описаны конкретные примеры создания плагина.
1. Создание шаблона
Для того, чтобы создать шаблон перейдите к генератору WordPress Plugin Boilerplate, заполните форму и нажмите кнопку « Build Plugin» .
Cгенерированный шаблон плагина автоматически будет скачан в виде *.zip файла. После чего его нужно распаковать и добавить в папку plugins вашего текущего проекта. Осталось только найти его в списке плагинов и включить как на рисунке ниже. Всё, плагин полностью готов для дальнейшей с ним работой. Далее рассмотрим структуру плагина более подробно.
2. Обзор структуры папок плагина
Теперь, когда плагин установлен, рассмотрим структуру папок. Все файлы включают в своё название краткое наименование плагина (слаг). Ниже показана структура шаблона.
Шаблон делиться на четыре основные папки: admin, includes, languages и public и другие сопутствующие файлы. Наиболее важные файлы я рассмотрю более подробно:
Папка ‘admin’
В папке admin располагается весь код административной части, включая папки CSS, JS и других компонентов.
css/my-plugin-admin.css — Файл для стилей страницы настроек плагина.
js/my-plugin-admin.js — Файл для js страницы настроек плагина.
class-my-plugin-admin.php — Этот файл содержит класс для создания административной части.
my-plugin-admin-display.php — Файл содержит HTML код страницы настроек плагина.
Папка ‘includes’
В этой папке находятся:
class-my-plugin.php — Основной файл с классом для работы плагина, куда добавляются все действия и фильтры.
class-my-plugin-activator.php — Файл содержит класс, необходимый для запуска во время активации плагина.
class-my-plugin-desactivator.php — Файл содержит класс для деактивации плагина.
class-my-plugin-i18n.php — Файл интернационализации.
class-my-plugin-loader.php — Файл загрузчика, который регистрирует все события, фильтры и хуки.
Папка ‘languages’
После генерации шаблона он содержит только один файл.
my-plugin.pot — Файл локализации по умолчанию пуст. Ниже будет описан способ локализации плагина более подробно.
Папка ‘public’
css/my-plugin-admin.css — Файл для стилей публичной части страницы плагина.
js/my-plugin-admin.js — Файл для js публичной части страницы настроек плагина.
/partials/my-plugin-public-display.php — Файл содержит HTML код страницы если плагин внедряет в шаблон сайта какие либо данные.
class-my-plugin-public.php — Файл содержит класс для публичной части плагина. В методах класса добавляются события и фильтры, необходимые для реализации функциональности плагина.
Дополнительные файлы
Список и краткое описание файлов расположенных в корневой папке плагина:
LICENCE.txt — Файл лицензии GPL-2.
README.txt — Файл описания плагина и его установки.
uninstall.php — Файл удаления плагина из WordPress.
wp-cbf.php — Файл начальной загрузки плагина. Тут расположена информация о плагине. Версия, автор и другие данные
3. Создание страницы настроек плагина (админка)
Выше я вкратце описал структуру. Теперь я покажу как легко реализовать админку плагина. В этой статье пример будет небольшой, основная цель сориентировать как конкретно все работает)).
1. Регистрация и создание страницы настроек плагина
Для начала нужно зарегистрировать плагин в cms и добавить страницу настроек. Для этого в файле admin/class-my-plugin-admin.php нужно добавить несколько методов
add_plugin_admin_menu() — Добавляет и регистрирует страницу настроек плагина.
add_action_links() — Добавляет ссылку на плагин в консоль
display_plugin_setup_page() — Добавляет путь к шаблону с html кодом формы админки
Осталось зарегистрировать действия (actions) и фильтр (add_filter()) для того, что бы появилась ссылка в меню. Для этого нужно открыть файл includes/class-my-plugin.php и в функцию define_admin_hooks() добавить:
Теперь если перейти в меню наcтроек появится новое меню «My plugin» смотри на рисунке ниже.
2. Добавление полей на страницу настроек
В рамках этой статьи я добавлю в виде примера текстовое поле, которое будет выводить в футере введённый в странице настроек текст. Приведу пример валидации и сохранения изменений его состояния.
По сути страница настроек плагина — это простая форма, и тут можно использовать любые элементы форм. Например, текстовые поля позволят выводить телефоны или подписи пользователей. Чекбосксы, списки и кнопки, все может пойти в ход. Принцип обработки данных схож и не вызовет затруднений. Для того, что бы вы могли правильно оформить html код поля следует установить плагин WordPress Admin Style, он демонстрирует примеры как правильно оформить любой тип элемента формы, с учётом дальнейшей локализации. Дальше я опишу как с этим работать.
Html код формы страницы настроек расположен в файле admin/partials/my-plugin-admin-display.php . Изначально страница совершенно пуста . Нужно добавить форму:
В итоге получим скромную страницу настроек. Я несколько сократил код, оставил лишь необходимый минимум для дальнейшей работы. На изображении ниже видно текстовое поле с меткой и placeholder-ом. Все тексты помещены в функцию esc_attr_e() — это позволит в дальнейшем добавить переводы на другие языки.
3. Валидация данных элементов формы
Для валидации формы нужно добавить метод val >admin/class-my-plugin-admin.php .
В примере функция validate() получает текущие состояния inputa с именем footer_text и с помощью тернарного оператора проверяет пуст он или нет. Таким образом можно проверить и провести санацию полученных данных из формы, после чего вернуть текущие состояния элементов формы в виде массива.
После проверки данных нужно обновить данные на странице настроек. Для этого под функцией validate добавим ещё одну update.
Остался последний шаг — это регистрация события обновления. Нужно в файле includes/class-my-plugin.php в функцию define_admin_hooks() добавить такие строки:
Итак, что у нас получилось. Был сгенерирован шаблон, на его основе создана страница настроек. Данные с этой страницы успешно сохраняются. Осталось реализовать в публичной части плагина работу с введёнными данными. В рамках этой статьи в футере активной темы будет выведен текст со страницы настроек.
4. Публичная часть плагина
Осталось обеспечить взаимодействие нашего плагина с сайтом WordPress. Для начала нужно получить данные со страницы настроек и вывести их используя события и хуки. Для получения данных нужно в конструкторы классов My_Plugin_Admin и My_Plugin_Public добавить следующую строку:
Это позволит получить значение любого параметра плагина указав ключ/имя. Пример получения значения нашего текстового поля:
Воспользоваться и вывести значение в футере поможет небольшая функция, которую нужно добавить в виде публичного метода класса My_Plugin_Public который находится в файле public/class-my-plugin-public.php
Что бы всё заработало осталось зарегистрировать событие в файле includes/class-my-plugin.php . Добавив строку в функцию define_public_hooks() :
Всё. Небольшой плагин готов и его можно протестировать. Включить/выключить в списке плагинов. На странице настроек сменить текст.
Перейдём к последнему этапу — локализации плагина.
5. Локализация плагина
Все поля которые мы задействовали, использовали конструкцию:
Это позволяет «зацепить» любую строку для перевода и сделать плагин дружественным на любом языке. В плагине присутствует папка languages она содержит единственный пустой файл my-plugin.pot. Автоматизировать и сделать процесс перевода простым и удобным, нам поможет проект poedit. Это редактор переводов прекрасно подойдёт для перевода тем и плагинов. Эту программу нужно скачать и установить.
Пользоваться ею очень легко. После запуска программы нужно выбрать в меню вариант «Перевод модуля или темы Worrdpress». Откроется диалоговое окно как на рисунке ниже слева. В место где указывает стрелочка переместить плагин или тему. Программа сама сканирует наличие переводимых полей. После чего всё сохраняем в файл my-plugin.pot заменяя старый.
Теперь осталось только добавить перевод для русского языка и перевести все поля. Создание перевода показано на рисунке сверху справа. После сохранения будет доступна локализация на вашем языке.
Небольшое замечание. Иногда программа создаёт файл в формате ru-RU.mo и плагин не хочет видеть перевод. Я нашёл решение — нужно перед названием перевода ставить слаг модуля, то есть my-plugin-ru_RU.mo и всё заработает нормально. Надеюсь в следующей версии poedit это учтут.
Заключение
Вот и все. Мы создали плагин WordPress с нуля благодаря генератору шаблонов WordPress Plugin Boilerplate. Я постарался написать небольшую инструкцию как разработать плагин на принципах ООП. Используя многочисленные хуки, события и фильтры CMS WordPress возможно создание плагина любой сложности.
Плагин описанный в этой статье расположен на репозитории github скачать и посмотреть его можно тут.
delay-delo.com
Блог web-разработчика Алексея Ртищева
Форма поиска
- Главная
- Создание плагина с помощью генератора шаблонов WordPress Plugin Boilerplate
Создание плагина с помощью генератора шаблонов WordPress Plugin Boilerplate
Создание плагина с помощью генератора шаблонов WordPress Plugin Boilerplate значительно экономит время и силы разработчика и в то же время, получаемый код соответствует принципам объектно-ориентированного программирования. В этой статье я подробно опишу, как быстро начать разработку плагинов WordPress. Для создания плагина в любой cms необходимо следовать набору правил, рекомендуемых разработчиками этой платформы. Плагины по функциональности могут отличаться друг от друга и иногда достаточно одного файла, чтобы расширить возможности cms.
Небольшому плагину нет смысла создавать сложную структуру, его легко поддерживать и несложно написать следуя инструкциям wordpress codex. Но, если в дальнейшем планируется расширение функционала или необходимо создание более сложной структуры — рекомендуется организовывать структуру плагина согласно «Best Practices». Я так и делал, пока не нашёл более удобный способ для создания нового плагина — это использование генератора шаблонов плагина — WordPress Plugin Boilerplate.
Генератор создаёт чистый шаблон на основе принципов объектно-ориентированного программирования, и включает в себя все необходимые элементы для создания административной части и локализации.
В этой статье я расскажу как создать чистый шаблон в WordPress Plugin Boilerplate и покажу начальные шаги разработки. Этого материала будет достаточно тем, кто уже имеет опыт разработки плагинов, а для новичков в следующих статьях будут описаны конкретные примеры создания плагина.
1. Создание шаблона
Для того, чтобы создать шаблон перейдите к генератору WordPress Plugin Boilerplate, заполните форму и нажмите кнопку « Build Plugin» .
Cгенерированный шаблон плагина автоматически будет скачан в виде *.zip файла. После чего его нужно распаковать и добавить в папку plugins вашего текущего проекта. Осталось только найти его в списке плагинов и включить как на рисунке ниже. Всё, плагин полностью готов для дальнейшей с ним работой. Далее рассмотрим структуру плагина более подробно.
2. Обзор структуры папок плагина
Теперь, когда плагин установлен, рассмотрим структуру папок. Все файлы включают в своё название краткое наименование плагина (слаг). Ниже показана структура шаблона.
Шаблон делиться на четыре основные папки: admin, includes, languages и public и другие сопутствующие файлы. Наиболее важные файлы я рассмотрю более подробно:
Папка ‘admin’
В папке admin располагается весь код административной части, включая папки CSS, JS и других компонентов.
css/my-plugin-admin.css — Файл для стилей страницы настроек плагина.
js/my-plugin-admin.js — Файл для js страницы настроек плагина.
class-my-plugin-admin.php — Этот файл содержит класс для создания административной части.
my-plugin-admin-display.php — Файл содержит HTML код страницы настроек плагина.
Папка ‘includes’
В этой папке находятся:
class-my-plugin.php — Основной файл с классом для работы плагина, куда добавляются все действия и фильтры.
class-my-plugin-activator.php — Файл содержит класс, необходимый для запуска во время активации плагина.
class-my-plugin-desactivator.php — Файл содержит класс для деактивации плагина.
class-my-plugin-i18n.php — Файл интернационализации.
class-my-plugin-loader.php — Файл загрузчика, который регистрирует все события, фильтры и хуки.
Папка ‘languages’
После генерации шаблона он содержит только один файл.
my-plugin.pot — Файл локализации по умолчанию пуст. Ниже будет описан способ локализации плагина более подробно.
Папка ‘public’
css/my-plugin-admin.css — Файл для стилей публичной части страницы плагина.
js/my-plugin-admin.js — Файл для js публичной части страницы настроек плагина.
/partials/my-plugin-public-display.php — Файл содержит HTML код страницы если плагин внедряет в шаблон сайта какие либо данные.
class-my-plugin-public.php — Файл содержит класс для публичной части плагина. В методах класса добавляются события и фильтры, необходимые для реализации функциональности плагина.
Дополнительные файлы
Список и краткое описание файлов расположенных в корневой папке плагина:
LICENCE.txt — Файл лицензии GPL-2.
README.txt — Файл описания плагина и его установки.
uninstall.php — Файл удаления плагина из WordPress.
wp-cbf.php — Файл начальной загрузки плагина. Тут расположена информация о плагине. Версия, автор и другие данные
3. Создание страницы настроек плагина (админка)
Выше я вкратце описал структуру. Теперь я покажу как легко реализовать админку плагина. В этой статье пример будет небольшой, основная цель сориентировать как конкретно все работает)).
1. Регистрация и создание страницы настроек плагина
Для начала нужно зарегистрировать плагин в cms и добавить страницу настроек. Для этого в файле admin/class-my-plugin-admin.php нужно добавить несколько методов
add_plugin_admin_menu() — Добавляет и регистрирует страницу настроек плагина.
add_action_links() — Добавляет ссылку на плагин в консоль
display_plugin_setup_page() — Добавляет путь к шаблону с html кодом формы админки
Осталось зарегистрировать действия (actions) и фильтр (add_filter()) для того, что бы появилась ссылка в меню. Для этого нужно открыть файл includes/class-my-plugin.php и в функцию define_admin_hooks() добавить:
Теперь если перейти в меню наcтроек появится новое меню «My plugin» смотри на рисунке ниже.
2. Добавление полей на страницу настроек
В рамках этой статьи я добавлю в виде примера текстовое поле, которое будет выводить в футере введённый в странице настроек текст. Приведу пример валидации и сохранения изменений его состояния.
По сути страница настроек плагина — это простая форма, и тут можно использовать любые элементы форм. Например, текстовые поля позволят выводить телефоны или подписи пользователей. Чекбосксы, списки и кнопки, все может пойти в ход. Принцип обработки данных схож и не вызовет затруднений. Для того, что бы вы могли правильно оформить html код поля следует установить плагин WordPress Admin Style, он демонстрирует примеры как правильно оформить любой тип элемента формы, с учётом дальнейшей локализации. Дальше я опишу как с этим работать.
Html код формы страницы настроек расположен в файле admin/partials/my-plugin-admin-display.php . Изначально страница совершенно пуста . Нужно добавить форму:
В итоге получим скромную страницу настроек. Я несколько сократил код, оставил лишь необходимый минимум для дальнейшей работы. На изображении ниже видно текстовое поле с меткой и placeholder-ом. Все тексты помещены в функцию esc_attr_e() — это позволит в дальнейшем добавить переводы на другие языки.
3. Валидация данных элементов формы
Для валидации формы нужно добавить метод val >admin/class-my-plugin-admin.php .
В примере функция validate() получает текущие состояния inputa с именем footer_text и с помощью тернарного оператора проверяет пуст он или нет. Таким образом можно проверить и провести санацию полученных данных из формы, после чего вернуть текущие состояния элементов формы в виде массива.
После проверки данных нужно обновить данные на странице настроек. Для этого под функцией validate добавим ещё одну update.
Остался последний шаг — это регистрация события обновления. Нужно в файле includes/class-my-plugin.php в функцию define_admin_hooks() добавить такие строки:
Итак, что у нас получилось. Был сгенерирован шаблон, на его основе создана страница настроек. Данные с этой страницы успешно сохраняются. Осталось реализовать в публичной части плагина работу с введёнными данными. В рамках этой статьи в футере активной темы будет выведен текст со страницы настроек.
4. Публичная часть плагина
Осталось обеспечить взаимодействие нашего плагина с сайтом WordPress. Для начала нужно получить данные со страницы настроек и вывести их используя события и хуки. Для получения данных нужно в конструкторы классов My_Plugin_Admin и My_Plugin_Public добавить следующую строку:
Это позволит получить значение любого параметра плагина указав ключ/имя. Пример получения значения нашего текстового поля:
Воспользоваться и вывести значение в футере поможет небольшая функция, которую нужно добавить в виде публичного метода класса My_Plugin_Public который находится в файле public/class-my-plugin-public.php
Что бы всё заработало осталось зарегистрировать событие в файле includes/class-my-plugin.php . Добавив строку в функцию define_public_hooks() :
Всё. Небольшой плагин готов и его можно протестировать. Включить/выключить в списке плагинов. На странице настроек сменить текст.
Перейдём к последнему этапу — локализации плагина.
5. Локализация плагина
Все поля которые мы задействовали, использовали конструкцию:
Это позволяет «зацепить» любую строку для перевода и сделать плагин дружественным на любом языке. В плагине присутствует папка languages она содержит единственный пустой файл my-plugin.pot. Автоматизировать и сделать процесс перевода простым и удобным, нам поможет проект poedit. Это редактор переводов прекрасно подойдёт для перевода тем и плагинов. Эту программу нужно скачать и установить.
Пользоваться ею очень легко. После запуска программы нужно выбрать в меню вариант «Перевод модуля или темы Worrdpress». Откроется диалоговое окно как на рисунке ниже слева. В место где указывает стрелочка переместить плагин или тему. Программа сама сканирует наличие переводимых полей. После чего всё сохраняем в файл my-plugin.pot заменяя старый.
Теперь осталось только добавить перевод для русского языка и перевести все поля. Создание перевода показано на рисунке сверху справа. После сохранения будет доступна локализация на вашем языке.
Небольшое замечание. Иногда программа создаёт файл в формате ru-RU.mo и плагин не хочет видеть перевод. Я нашёл решение — нужно перед названием перевода ставить слаг модуля, то есть my-plugin-ru_RU.mo и всё заработает нормально. Надеюсь в следующей версии poedit это учтут.
Заключение
Вот и все. Мы создали плагин WordPress с нуля благодаря генератору шаблонов WordPress Plugin Boilerplate. Я постарался написать небольшую инструкцию как разработать плагин на принципах ООП. Используя многочисленные хуки, события и фильтры CMS WordPress возможно создание плагина любой сложности.
Плагин описанный в этой статье расположен на репозитории github скачать и посмотреть его можно тут.
Создание плагина на WordPress в 4 шага
Чтобы создать плагин на движок wordpress нужно следовать данной инструкции и шаг за шагом вы сможете создать его.
Начиная работать с WordPress, понимаешь, что это умный движок. В нем предусмотрено множество плюшек упрощающих жизнь как пользователю, так и начинающему разработчику.
1. Название плагина и папки
В любом плагине на WordPress есть главный исполняющий файл и второстепенные. Название php файла плагина должно быть латиницей, без пробелов. Название папки, в которой он должен находиться должно, быть таким же. Пример: папка плагина: anblog-test, исполняющий файл: anblog-test.php . Чем уникальнее название плагина тем выше вероятность, что он не будет конфликтовать с другими плагинами движка. Т что проявляйте фантазию.
2. Иерархия файлов и директорий
Если в плагине будут другие подключаемые файлы, то размещайте их в правильной иерархии. Все js скрипты в папке js, css стили в папки css, картинки в папке img:
3. Главный файл плагина
Теперь рассмотрим содержимое главного файла плагина (anblog-test.php).
/*
Plugin Name: Название плагина – можно на русском
Description: Описание плагина. Можно вставлять небольшой html: подробнее о плагине: здесь
Version: 1.0
Author: Андрей
Author URI: http://blogprogram.ru/
Plugin URI: http://blogprogram.ru/wordpress-plagin-calendarya-i-chasov
License: GPL2
*/
/* Copyright YEAR PLUGIN_AUTHOR_NAME (email : [email protected])
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2, as
published by the Free Software Foundation.
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
*/
?>
Файл anblog-test.php сохраняйте в UTF-8 без BOM. Из всех этих записей можно оставить только одну, вот так:
4. Рабочая область плагина
Теперь пропишем пути к плагину через константы. Они необходимы, чтобы всегда знать директории до файлов с плагином. Используем переменные:
define(‘ANBLOG_TEST_DIR’, plugin_dir_path(__FILE__)); //полный путь к корню папки плагина (от сервера)
define(‘ANBLOG_TEST_URL’, plugin_dir_url(__FILE__)); //путь к корню папки плагина (лучше его использовать)
Теперь создадим функцию подключения css и js файлов (заметьте, здесь мы уже подключаем дополнительные файлы плагина за счет констант):
function anblogtest_include() <
echo ‘
‘.PHP_EOL;
echo ».PHP_EOL;
>
Чтобы вывести содержимое функции на сайте откройте файл сайта (например, header.php, footer.php или любой другой), в котором она должна сработать и пропишите:
В том месте, где вы пропишите функцию, выведется ее значение (в данном случае подключатся стили и скрипты, естественно, вы можете туда вписать свой код, например, акции, кнопки поделиться и т.п.). Таких функций в файле плагина можно создавать бесконечно много.
На этом создание плагина можно считать законченным. Чтобы создать для него установщик просто заархивируйте папку anblog-test в zip архив.
В следующем уроке я расскажу о продвинутом создании плагинов с большими возможностями.
Создание плагина WordPress
Разбираем моменты создания плагина WordPress.
Создание плагина, основы
В директории wp-content/plugins/ создаем папку с названием плагина.
В ней создаем файл .php с названием плагина (не обязательно). В начале файла помещаем информацию:
Обязательно в начале php файлов плагина вставляем строку
if ( ! defined( ‘ABSPATH’ ) )
Это защитит файл от прямого доступа через URL
Далее подключаем скрипты и стили. Можно создавать для этого отдельные папки, можно прямо в корень.
Далее помещаем функции относящиеся к данному плагину.
Если при подключении скрипта, указать порядковый номер, то можно контролировать приоритет вывода
Можно создать файлы включения и в них делать подробный функционал, либо разбивать их по назначению
Ссылка на изображения плагина
Другие функции вывода относительных путей WordPress:
home_url | Home URL | http://www.example.com |
site_url | Site directory URL | http://www.example.com or http://www.example.com/wordpress |
admin_url | Admin directory URL | http://www.example.com/wp-admin |
includes_url | Includes directory URL | http://www.example.com/wp-includes |
content_url | Content directory URL | http://www.example.com/wp-content |
plugins_url | Plugins directory URL | http://www.example.com/wp-content/plugins |
theme_url | Themes directory URL | http://www.example.com/wp-content/themes |
wp_upload_dir() | Upload directory URL (returns an array) | http://www.example.com/wp-content/uploads |
Включить шаблон из плагина
Если мы создаем плагин таксономии (например) и хотим чтобы у этой таксономии был специфический шаблон. Нужно поместить шаблон (taxonomy-label.php) в плагин и инициализировать его
Условия внутри плагина
Условия типа if( !is_front_page() || !is_home() ) внутри плагина работать не будут, т.к. в момент подключения плагина еще не сформирован объект $wp_query и данные проверки будут выдавать wp_debug.
Чтобы проверки начали работать нужно добавить следующий код
Бывает так, что не отключаются плагин при данном условии. Это происходит из-за того что основной запрос изменен таки образом что он уже не подпадает ни под is_home ни под is_front_page. Чтобы этого не случалось после изменения запроса нужно не забывать вставлять wp_reset_query();
А чтобы выявить это, нужно в шапке и подвале поставить проверки и посмотреть сохранилась ли определение основного запроса:
Поделится информацией с друзьями