Пишем плагин для Wordpress. Функциональная составляющая (часть 5)
И снова поговорим о том, как написать для блог-движка Wordpress свой плагин. В прошлый раз мы остановились на том, что создали страницу настроек для плагина и добавили её в административную панель Wordpress. Настало время перейти непосредственно к работе над самой незаметной, но, тем не менее, одной из самых важных частей плагина — его функционалом. Нам необходимо разработать процедуры, при вызове которых из плагина будут происходить заложенные в его проект действия.
Начнём.
Пишем функции для плагина Wordpress
Собственно говоря, поскольку функциональная часть — дело абсолютно индивидуальное, я ограничусь простым примером. Функции моего wordpress плагина будут просто добавлять какое-то слово к заголовкам записей и/или какую-то фразу к содержимому записей.
Создание более сложных функций оставлю для знатоков php, мне же как-то ближе perl. Скажу только, что всегда можно поискать готовый плагин, имеющий в своём составе часть нужного нам функционала, и, если он лицензирован под свободной лицензией, скопировать функции оттуда и переработать их под себя. Текст лицензии, как правило, прилагается к плагину. В крайнем случае в файле плагина будет указано название лицензии, под которой он распространяется.
Функция модиикации заголовка и тела Wordpress-публикаций
Напишем и разберём функцию, занимающуюся в нашем плагине непосредственно модификацией заголовка и содержимого публикаций в Wordpress-блоге.
function mod_content($title, $content){
if (get_option('myplug_modify_title')) {
$title = $title . myplugin_get_phrase($ph_type = "title");
}
if (get_option('myplug_modify_content')) {
$content = $content . myplugin_get_phrase($ph_type = "body");
}
return $title;
return $content;
}
Данная функция получает заголовок и тело записи и затем, если на странице настроек плагина была указана соотвтетствующая опция, обрабатывает полученные данные. В нашем случае — приклеивает в конец заголовка/тела wordpress-публикации случайную фразу, взятую из таблицы настроек плагина.
Затем изменённые (или оставшиеся неизменными) заголовок и тело записи возвращаются назад в движок.
Функция получения случайной фразы из таблицы настроек плагина
А теперь попробуем написать функцию плагина, получающую случайные фразы из таблицы настроек, хранящейся в БД нашего Wordpress-блога.
function myplugin_get_phrase($ph_type){
global $wpsig_sig_table, $wpdb;
$sql = "SELECT '$ph_type' FROM $myplugin_prefs_table ORDER BY RAND() LIMIT 1";
$phrase = $wpdb->get_var($sql);
return $phrase;
}
Эта функция, будучи вызванной, получает на входе имя столбца в таблице БД, из которого нужно взять некое случайное значение. Запрос на выборку организован примитивно и абсолютно неоптимально. При наличии большого количества данных в таблице конструкция сортировки ORDER BY RAND будет достаточно сильно тормозить, но я не предполагаю для совего плагина раздутой таблицы в БД и потому пременяю такой вид соритовки. LIMIT 1, кстати, вернёт нам первое значение из сформированного списка записей.
Если вы собираетесь обрабатывать сколь-нибудь серьёзное количество данных в таблице — обработку вывода необходимо с mySQL переложить на php. То есть получив массив значений при помощи запроса к базе, затем обработать этот массив внутри своего плагина.
Функции Wordpress для работы с БД mySQL
Механизм Wordpress предоставляет несколько способов (методов) получения информации из БД:
- $wpdb->get_results ($sql, $type); — получение всех строк результата запроса, где $type может принимать следующие значения:
- OBJECT — данные возвращаются в виде массива, где каждый элемент является объектом, а его поля — это поля вашей таблицы в БД;
- ARRAY_A — данные возвращаются в виде ассоциативного массива (хэша);
- ARRAY_N — каждая строка данных представлена в виде нумерованного массива, каждому полю будет присвоен числовой индекс (по порядку расположения полей в таблице БД).
- $wpdb->query ($sql); — метод для выполнения так называемых «простых» запросов, применяется для обработки запросов INSERT, UPDATE, DELETE.
- $wpdb->get_row ($sql, $type, $offset); — получение одной строки из всего результата запроса, где:
- $type — см. выше;
- $offset — номер строки, которая будет выбрана из всего результата (хинт: можно генрировать $offset случайным образом и получать случайную строку из запроса).
- $wpdb->get_var ($sql, $col_offset, $row_offset); — этот метод позволяет получить одно значение из всего результата запроса, соответственно:
- $col_offset — см. выше;
- $row_offset — номер столбца, из которого будет взят результат.
Таким образом, сгенерировав случайные номера строки и столбца, можно получить из базы случайное значение.
Написание плагина для Wordpress почти закончено
Что ж, вот мы и рассмотрели функциональную часть плагина. В принципе, он уже должен быть работоспособен. Нам осталось только интернационализировать наш плагин и познакомиться с порядком его добавления в репозитории wordpress.org.
Этим мы и займёмся в следующих выпусках руководства «Как написать плагин для Wordpress», а пока по-прежнему можно скачать архив с плагином-примером.
Всем удачи!
октября 19, 2009 | Posted by dimio 
Categories:
Tags:

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