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

Рассмотрим пример создания очень простого  плагина, который позволяет вставлять в запись ссылку на внешний сайт.

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

1. Выбор имени плагина
Имя плагина должно быть уникальным, поэтому следует попробовать найти плагин с выбранным именем на сайте WordPress и в Интернет (например, в поисковой системе google).
WordPress ищет плагины в папке /wp-content/plugins, поэтому для того, чтобы установить плагин, его нужно поместить в эту папку. Потом его можно будет активировать на панели администрирования.

2. Создание папки плагина и его php-файла с выбранным (уникальным) именем: myref и myref.php. (Если плагин будет состоять из одного php-файла, для него можно не создавать отдельную папку)
В начале php-файла плагина должно находиться его описание и лицензия:

<?php
/*
Plugin Name: myref
Plugin URI: http://mblogm.ru
Description: Inserts site's url
Version: 1.0.0
Author: fmblogm
Author URI: http://mblogm.ru

Copyright 2009  fmblogm (email : fmblogm {at} gmail.com)

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
?>

Формально этого уже достаточно для создания плагина. Хотя этот плагин ничего не делает, он появится в списке плагинов, и его можно активировать.

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

Хуки (hooks)

Хуки обеспечивают привязку плагина к WordPress.

  • Действия (Actions) – это хуки, которые WordPress запускает в определенные моменты исполнения или при наступлении определенных событий. В эти моменты в плагине можно задать вызов некоторых PHP-функций с использованием Action API.
  • Фильтры (Filters) - это хуки, которые WordPress запускает для того, чтобы изменять значения разных типов перед добавлением их в базу данных или перед отображением в браузере. В эти моменты в плагине можно задать вызов некоторых PHP-функций с использованием Filter API.
  • Сокращенный код (Shortcodes) - это хуки, позволяющие добавлять в записи WordPress результат выполнения PHP-функций с использованием Shortcode API (начиная с WordPress 2.5) .

Сокращенный код (Shortcodes)

Поддерживаются шоткоды вида

[shortcode_name attr_1="value_1" ... attr_n="value_n"]

и

[shortcode_name attr_1="value_1" ... attr_n="value_n"]content[/shortcode_name]

Функция-обработчик сокращенного кода может принимать следующие параметры

  • $atts – массив атрибутов
  • $content – содержимое (когда используется форма с закрывающим тегом)
  • $code - имя шоткода (когда оно соответствует имени обратного вызова )
function my_shortcode_handler($atts, $content=null, $code="") {
   // $atts    ::= array of attributes
   // $content ::= text within enclosing form of shortcode element
   // $code    ::= the shortcode found, when == callback name
   // examples: [my-shortcode]
   //           [my-shortcode/]
   //           [my-shortcode foo='bar']
   //           [my-shortcode foo='bar'/]
   //           [my-shortcode]content[/my-shortcode]
   //           [my-shortcode foo='bar']content[/my-shortcode]
}

Регистрация обработчика:

add_shortcode('my-shortcode', 'my_shortcode_handler');

Например, сокращенный код [ref] с поддержкой двух атрибутов text и url. Оба атрибута являются необязательными, и когда они не заданы, применяются их дефолтные значения:

// [ref text="Текст ссылки" url="url ссылки"]
function ref_func($atts) {
extract(shortcode_atts(array(
'text' => 'Study English Now',
'url' => 'http://studyenglishnow.ru/'
), $atts));
return '<noindex><a href="'. $url .'" rel="nofollow">'.$text.'</a></noindex>';
}
add_shortcode('ref', 'ref_func');

Когда вызывается тег шаблона the_content (и отображается содержимое записи), shortcode API анализирует зарегистрированные шоткоды, выделяет их атрибуты и содержимое и передает их обработчику данного шоткода. В тело записи вместо тега (тегов) шоткода добавляется строка, возвращаемая обработчиком.

Еще один пример

Следующий плагин [enti] с атрибутом text вставляет HTML-сущности заданных символов (по умолчанию плагин вставляет “]”; он используется вместо простой квадратной скобки, чтобы показывать на странице текст вызова плагина, например, “[ref]“, а не результат работы этого плагина):

function enti_func($atts) {
extract(shortcode_atts(array(
'text' => ']'
), $atts));
return htmlentities($text);
}
add_shortcode('enti', 'enti_func');

Этот плагин просто позволяет использовать в записи php-функцию htmlentities().
Шоткод [enti text="&"] выведет &amp; (&).

, , , , , , ,

Spam Protection by WP-SpamFree Plugin

Сидим, как в деревне! Ни радио, ни телевизора – один Интернет остался!