Плагин чтобы своими руками

Содержание
  1. Разработка плагина для WordPress
  2. Нельзя просто взять и написать плагин для WordPress?
  3. Определиться с тем, какие задачи будет выполнять плагин
  4. Создание плагина
  5. Метаданные плагина
  6. Хуки в плагине
  7. register_activation_hook()
  8. register_deactivation_hook()
  9. register_uninstall_hook()
  10. Комментарии — 8
  11. Написание плагина WordPress с нуля: пошаговое руководство
  12. Описание необходимого функционала плагина
  13. Плагин для одного сайта
  14. Пошаговое руководство по разработке плагина для WordPress
  15. 1. Начало
  16. Примечания к шагу 1
  17. 2. Запрос последних записей всех типов
  18. Примечания к шагу 2
  19. 3. Как запросить все записи, опубликованные в этом месяце
  20. 4. Объединение запроса даты с основным запросом
  21. Примечания к шагу 4
  22. 5. Отладка
  23. Примечания к шагу 5
  24. 6. Повторяем попытку
  25. Примечания к шагу 6
  26. 7. Это не сработало — отладка
  27. Примечания к шагу 7
  28. 8. Пользовательский интерфейс и шорткод
  29. Примечания к шагу 8
  30. 9. THE_DATE() работает довольно странно?
  31. Примечания к шагу 9
  32. Общие мысли о разработке плагинов WordPress
  33. Основы
  34. Создание плагина
  35. Существуют и другие параметры в заголовке
  36. Шаблон для разработки WordPress плагинов
  37. Хуки: экшены и фильтры
  38. Используйте WordPress API
  39. Как WordPress загружает плагины

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

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

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

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

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

Например однажды один мой приятель решил создать плагин, связанный с SEO и фильтрацией товаров, так его компания выделила ему 80к бюджета и дала два месяца на разработку.

Весь наш процесс мы разделим на шаги для удобства понимания.

Определиться с тем, какие задачи будет выполнять плагин

Скажу так, код, который находится в плагине, очень схож с тем кодом, который размещают в functions.php . То есть вы можете потренироваться с готовыми хуками.

Ну раз уже я заговорил о произвольном CSS коде, то эту цель и будет выполнять мой плагин. Например я просто покрашу верхнюю панель в админке в другой цвет. CSS я вставлю прямо через тег, используя хук admin_head .

По сути это готовый код и если вы отправите его в functions.php , то всё будет отлично работать.

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

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

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

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

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

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

Поимимо «Plugin name» у плагинов есть и другие метаданные, давайте их разберём подробнее.

Метаданные плагина

В свой главный файл плагина теперь отправляем что-то в этом духе:

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

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

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_deactivation_hook()

Функция register_deactivation_hook() позволяет привязать какую-то произвольную функцию к событию активации плагина.

register_uninstall_hook()

Функция register_uninstall_hook() позволяет привязать какую-то произвольную функцию к событию активации плагина.

Предположим после удаления вашего плагина, вполне логично очищать базу данных от его настроек, тогда код будет выглядеть так:

Также в ситуации с удалением плагина вы можете рассмотреть вариант с использованием файла uninstall.php.

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

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

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

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

Все очень просто, пока не попробуешь сделать что-то действительно нужное, что потребует зарегистрировать кастомный тип данных, отобразить таблицу с записями этого типа, обработать пагинацию, создать редактор, отличающийся от дефолтного, прописать балк-функции и еще несколько нужных вещей. Но тогда уже заголовок не такой кликбейтный получится, да.

Кликбейт наше всё

Спасибо за ваши статьи, всегда выбираю их из списка поисковиков при том или ином вопросе. Доступный язык изложения, нет лишней «воды», и все коды работают после прочтения материала.

Спасибо! Приятно слышать

Миша, научи, пожалуйста, как зарабатывать на разработке под WordPress. Рынок переполнен, люди работают за еду.

Легко. А свои WordPress на сколько оцениваете от 1 до 10? 🙃

Создаю плагины, темы, верстаю. Думаю на 6-7.

Источник

Написание плагина WordPress с нуля: пошаговое руководство

Это пошаговое руководство по разработке плагинов для WordPress. В нем описываются действия, которые я выполнял при разработке реального плагина.

Описание необходимого функционала плагина

Мы создадим плагин, который будет сообщать о том, какие посты (любого типа) были опубликованы в этом календарном месяце, и кто их авторы.

Плагин для одного сайта

Я создавал этот плагин как индивидуальное решение для одного сайта. Поэтому нет необходимости делать плагин расширяемым с помощью хуков и тщательно продумывать такие моменты, как пространство имен и перевод.

Пошаговое руководство по разработке плагина для WordPress

Последовательность моих шагов:

1. Начало

Примечания к шагу 1

Этот шаг позволяет убедиться, что WordPress видит мой плагин. А также что с его помощью можно осуществлять вывод данных на экране.

Обратите внимание на строку if( ! isset( $_GET[‘wpsdt’] ) ). В ней вызывается суперглобальная переменная PHP $_GET для запуска плагина. Она задействуется тогда, когда в URL-адресе есть строка запроса wpsdt. Этот прием позволяет запускать плагин путем изменения параметров URL-адресов.

Я также подключаю событие WordPress init, чтобы плагин запускался раньше остальных. По этой же причине я назвал перехваченную функцию wpshout_do_thing(). Благодаря чему она не вызовет конфликта пространства имен.

Читайте также:  Музыкальные инструменты деревянные своими руками

Код var_dump(); die позволяет убедиться, что плагин выводит данные и прекращает другие процессы PHP.

Результат работы кода, приведенного выше:

2. Запрос последних записей всех типов

Примечания к шагу 2

На этом шаге мы создаем пользовательский запрос WP_Query и выполняем var_dump(), чтобы убедиться, что запрос работает. Он запрашивает последние пять опубликованных записей любого типа.

В результате мы получаем объект WP_Query posts, который представляет собой массив из пяти записей.

3. Как запросить все записи, опубликованные в этом месяце

Первоначально я не знал, как это реализовать. Но затем мне удалось найти пример, в котором показывается, как передать элемент date_query массива WP_Query:

Но как в PHP указать, что нам нужен текущий месяц? Поиск привел меня к следующему примеру:

4. Объединение запроса даты с основным запросом

Примечания к шагу 4

На этом шаге мы добавляем параметр date_query в существующий WP_Query. А также изменяем значение posts_per_page на -1, чтобы получить все интересующие записи.

Результат выполнения приведенного выше кода:

Но этот код работает неправильно. Запрос возвращает не те записи, которые нам нужны.

5. Отладка

Примечания к шагу 5

На этом этапе мы выполняем следующие действия:

  1. Комментируем код, который ведет себя странно.
  2. Изучаем этот код.

Вся проблема в элементе after, который является частью массива date_query. Чтобы понять, что пошло не так, выведем информацию об этом элементе с помощью функции var_dump().

Оказывается, месяц является строкой , «Oct». А date_query может принимать только числовое значение.

6. Повторяем попытку

Примечания к шагу 6

Замени значение ‘M’ на ‘m’ в date_query. Потому что ‘m’ дает нам числовое обозначение месяца, когда он передается в date().

Запуск этого кода дает следующее:

Но это тоже не сработало. Запрос WP_Query возвратил пустой массив posts.

7. Это не сработало — отладка

Примечания к шагу 7

Ошибка заключалась в том, что я использовал day как отдельный элемент массива date_query. А нужно поместить day внутрь элемента after из date_query. Исправление и повторный запуск кода дает следующее:

В результате мы получили десять записей текущего месяца!

8. Пользовательский интерфейс и шорткод

Примечания к шагу 8

Мы будем использовать шорткоды. Для этого меняем add_action() на add_shortcode() и называем функцию шорткода wpshout_show_this_months_posts_by_author(). С помощью буферизации вывода мы сможем контролировать то, какую разметку будет возвращать шорткод. Внутри цикла while() используются теги шаблонов the_author() и the_date().

Запустив плагин с помощью шорткода wpshout_show_this_months_posts_by_author, мы получаем следующее:

Но почему в одном из выведенных постов отсутствует дата?

9. THE_DATE() работает довольно странно?

Примечания к шагу 9

Оказалось, что функция the_date() выводит только один пост за одну дату . Если существуют две записи с одинаковой датой публикации, она перестает работать.

Также мне удалось выяснить, что у get_the_date() этой проблемы нет. Поэтому используем данную функцию. Результат запуск обновленного кода:

И это именно то, что нужно.

Общие мысли о разработке плагинов WordPress

Разработка плагина для WordPress – это обучение, эксперименты, исследования с помощью метода проб и ошибок. Но главное использовать имеющиеся знания для выполнения простых задач и получать новые для выполнения более сложных.

Пожалуйста, опубликуйте ваши мнения по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, отклики, подписки, лайки, дизлайки!

Источник

Основы

В основе любого плагина лежит PHP код, логика его работы и правильное использование API WordPress. Задачей любого плагина должно быть создание нового функционала с минимально возможной нагрузкой, совместимость с ядром WordPress и грамотная работа кода в условиях постоянно-обновляющейся системы.

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

Первое что нужно для создание плагина — это создать отдельный каталог (папку) для содержимого плагина, например: my-plugin-name . В этой папке будут все файлы плагина. Среди них особое место занимает главный файл плагина, который желательно, должен совпадать с названием самой папки плагина, например my-plugin-name.php . В результате должна получиться такая структура: wp-content/plugins/my-plugin-name/my-plugin-name.php .

После создания файла плагина, в него нужно поместить заголовки, чтобы wordpress распознал плагин как плагин. Для этого нужно указать его имя так:

После сохранения, плагин можно увидеть в списке плагинов на сайте WordPress. Войдите в админку WordPress в раздел Плагины (слева в навигации админки). Там вы должны увидеть свой новый плагин!

Читайте также:  Колокольчик для школы своими руками

Если плагин является всего одним файлом как Hello Dolly, то он мог бы находится непосредственно в папке плагинов. Но рекомендуется соблюдать стандарт: файлы плагина должны находиться в своей собственной папке, а главный файл плагина должен иметь название папки плагина.

Плагин может быть личный (создается только для одного сайта), а может быть публичный (для общего пользования, выкладывается в репозиторий плагинов WordPress).

Требования к личному плагину, обычно минимальны, а вот с публичным все сложнее, нужна лицензия, поддержка, совместимость, локализация и прочее. Поэтому публичные плагины создавать в разы сложнее.

Лицензия сообщает пользователям, как они могут использовать код плагина в своих целях. Для поддержания совместимости с ядром WordPress рекомендуется выбрать лицензию, работающую с GNU General Public License (GPLv2+).

Существуют и другие параметры в заголовке

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

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

Чтобы не создавать файлы и структуру с нуля, можно использовать шаблон для создания плагина:

  • WordPress Plugin Boilerplate — генератор шаблона, где указывается название плагина, которое будет использовано в названиях папок, классов и функций — WordPress Plugin Boilerplate Generator.

Шаблон представляет собой стандартную и организованную объектно-ориентированную основу.

Используя такой подход, можно быть уверенным в более четкой и понятной структуре плагина. Так можно сгенерировать основу и затем просто удалить все ненужные файлы, оставив структуру папок — структура важна!

Хуки: экшены и фильтры

По всему ядру WordPress расположено множество хуков. Хуки позволяют подключиться в определенных местах к коду ядра WordPress, чтобы изменить его поведение, при этом не затрагивая файлы ядра.

Существует два типа хуков в WordPress:

События позволяют добавлять или изменять функционал WordPress, в то время как фильтры позволяют изменять данные или строки. Хуки нужны не только для разработчиков плагинов — они используются везде: в самом ядре WordPress, в плагинах и темах. Именно хуки делают WordPress таким гибким.

Непосредственно к плагинам относятся три функции отвечающие за хуки плагина:

register_activation_hook() — регистрирует функцию, которая будет срабатывать во время активации плагина.
Используется для добавления настроек плагина и т.п.

register_deactivation_hook() — регистрирует функцию, которая должна запускаться после деактивации плагина.
Используется для удаления временных данных плагина.

  • register_uninstall_hook() — регистрирует функцию, которая вызывается при удалении плагина.
    Используется при удалении плагин для удаления всех данных плагина: в настройках, в файлах, в базе данных и т.д.
  • Кроме этих трех функций к API плагинов относятся все функции хуков и некоторые функции плагинов.

    Можно создавать свои собственные хуки в исходном коде плагина с помощью do_action() или apply_filters(). Они позволят разработчикам расширить возможности плагина и сделают его расширяемым — таким же как ядро WordPress.

    Представьте, что вы создали плагин и его использует другой разработчик, но при этом вы продолжаете развивать плагин, улучшаете его код и выпускаете новые версии плагина, но при обновлении все предыдущие файлы плагина затираются новыми. Так, если другой разработчик вносил правки прямо в файлы вашего плагина, то его изменения будут утеряны. Чтобы этого не случилось, нужны хуки, подключаясь к которым другой разработчик сможет расширить ваш плагин, не изменяя кода самого плагина.

    Используйте WordPress API

    WordPress предоставляет ряд API. API могут значительно упростить написание кода. Т.е. не нужно изобретать колесо — оно уже есть и 100 раз улучшено.

    API настроек — упрощает создание и управление опциями плагина, которые сохраняются в базу данных.

  • HTTP API — упрощает создание HTTP запросов в PHP. Отличная замена велосипедов на cURL.
  • Как WordPress загружает плагины

    При активации плагина WordPress, записывает путь на его главный файл в опцию active_plugins . Далее при загрузке любой страницы (админки и фронта) WordPress просто подключает все файлы из опции active_plugins (пути на них там хранятся в виде массива). Смотрите как это выглядит:

    Из всего этого следует: просто своим присутствием плагины не влияют на скорость работы сайта (за исключением подключения файла плагина, а это супер быстрая операция). Неактивные плагины не влияют вообще никак. Подробнее читайте здесь.

    Источник

    Оцените статью
    Своими руками