A huge collection of 3400+ free website templates JAR theme com WP themes and more at the biggest community-driven free web design site
Домой Wordpress Как написать плагин для wordpress за 10 минут.
plugins-wordpress

Как написать плагин для wordpress за 10 минут.

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

Данная статья предполагает, что wordpress уже установлен (на момент написания статьи у меня установлен WordPress 3.4.1.) и Вы хотите чуть глубже ознакомится с устройством этой отличной системы управления.

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

  • Что такое wordpress
  • Как написать функцию на языке php

Плагин, отправляющий письмо при публикации поста.

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

Этот пример я подглядел на официальном сайте wordpress. Давайте напишем плагин, который при изменении определенного поста на статус “Опубликовать” отсылает на указанный адрес электронной почты сообщение что появился новый пост. Думаю этого будет достаточно для первого урока.

    Составим план действий:

  • Создать файл плагина.
  • Задать описание плагина, которое будет отображаться в админке wordpress.
  • Добавляем плагин в wordpress
  • Написать функцию отправки почты.
  • Повесить на событие публикации поста функцию отправки почты.
  • Установить и активировать плагин.

Переходим к делу.

Создание файла плагина wordpress.

Разберем что собой представляет плагин wordpress. На уровне файловой системы это файл или несколько файлов в которых запрограммирован функционал, который необходимо добавить в систему. Сам же плагин добавляет какие либо полезные функции в wordpress.

В wordpress по умолчанию плагины хранятся в папке wp-content/plugins, причем если Ваш плагин состоит только из одного файла, то можно кинуть его прямо в эту директорию. Если плагин включает в себя несколько файлов, то необходимо поместить его в отдельную директорию. Хорошим тоном является называть папку так же как и плагин.

Лучше всего сразу приучиться создавать отдельную папку для плагина. Создадим на локальном компьютере папку. У меня она будет называться post_publish_email_send. Так же создадим пустой php файл с тем же названием post_publish_email_send.php, в котором будет пока лишь открывающий и закрывающий теги кода. Если Вы собираетесь Выложить Ваш плагин в сети то следует сделать уникальным его имя. То имя, которое выбрал я в данном примере скорее всего уникально но лучше это проверить поискав на официальном сайте wordpress плагин с подобным именем. Если не найден то значит название нам подходит.

 

Добавление стандартной информации в plugin wordpress.

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

 

Для того чтобы Ваш плагин соответствовал стандартам лицензии GPL2 просто добавьте чуть ниже следующие строки, указав в нужном месте электронный адрес:

 

Сохраняем файл и наш плагин готов, правда никакой смысловой нагрузки пока не несет и в списке его не видно.

Добавляем наш плагин в wordpress.

Для того, чтобы добавить наше гениальное произведение в админку системы управления wordpress необходимо скопировать только что созданную папку post_publish_email_send с файлом post-publish-email-send.php в папку wp-content/plugins на веб сервере.

Неактивные плагины

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

Если вместо описания отображаются кракозябры, то скорее всего проблема в кодировке файла. Попробуйте поменять весь код файла в кодировку UTF-8. Мне помогло.

Пишем функцию отправки почты в плагине wordpress.

В стандартном функционале wordpress имеется функция wp_mail(); которая построена на стандартной функции mail() из php. Отличие этих функции заключается в различии типов некоторых параметров, но в данный момент это не важно. В функции wp-mail они несколько расширены и более удобны для использования, хотя ее конструкция основана на функции mail() из php.

 

 

    В качестве параметров принимает следующее:

$to

      – string (строка) или (array) массив с адресами получателей

$subject

      – string (строка) с темой письма

$message

      – string (строка) с содержанием письма

$headers

      – string (строка) или (array) массив заголовков писем (для продвинутых)

$attachments

    – string (строка) или (array) массив файлов, которые необходимо прикрепить к письму
 

Про $post_ID будет написано чуть позже. Сейчас могу сказать что это ID записи которую опубликовали.

Как видите в функции мы использовали всего три параметра: адрес получателя, тему письма и тело сообщения. Остальные поля можно оставить в данном случае незаполненными. Для того чтобы функция wp_mail работала, в файле php.ini должна быть разрешена отправка почты.

Вешаем на событие публикации поста функцию.

В WordPress при публикации поста происходит событие publish_post. Кроме того это событие происходит если запись была отредактирована и опубликована заново.

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

Список всех возможных событий можно увидеть тут: http://codex.wordpress.org/Plugin_API/Action Reference

На этой странице мы можем найти действие publish_post – именно по нему мы хотим чтобы отправлялось письмо. Данное действие содержит аргумент post ID – идентификатор записи. Этот идентификатор будет отправлен в нашу функцию, как раз в переменную $post_ID.

Теперь мы должны использовать функцию add_action которая добавляет определенные действия на указанное событие.

add_action($tag, $function_to_add, $priority, $accepted_args);

  • $tag – название действия к которому привязывается действие. В нашем случае это publish_post
  • $function_to_add – название функции которая будет вызываться при возникновении денного действия. У нас это post-publish-email-send
  • $priority – приоритет запуска функции. Если у нас на событие публикации записи будет прикреплено две разные функции, то первая выполнится та функция у которой $priority меньше.
  • $accepted_args – количество аргументов, которые принимает функция (указываем цифрой количество аргументов). По умолчанию 1, а значит нам можно этот параметр не указывать так же как и $priority (у нас прикреплена всего одна функция)

Теперь когда с add_option стало все более менее понятно, можно прикрепить к событию publish_post. Для этого в нашем файле плагина пропишем следующую строчку:

 

В коде плагина не оставляйте пустых строк вне тегов так как wordpress на это выдает предупредительное сообщение при установку.

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

Оставить Комментарий

Вы должны Зарегистрироваться или Войти что бы оставить комментарий.