Пишем плагин для Wordpress. Функциональная составляющая (часть 5)

plugins-wordpress

И снова поговорим о том, как написать для блог-движка 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 предоставляет несколько способов (методов) получения информации из БД:

  1. $wpdb->get_results ($sql, $type); — получение всех строк результата запроса, где $type может принимать следующие значения:
    • OBJECT — данные возвращаются в виде массива, где каждый элемент является объектом, а его поля — это поля вашей таблицы в БД;
    • ARRAY_A — данные возвращаются в виде ассоциативного массива (хэша);
    • ARRAY_N — каждая строка данных представлена в виде нумерованного массива, каждому полю будет присвоен числовой индекс (по порядку расположения полей в таблице БД).
  2. $wpdb->query ($sql); — метод для выполнения так называемых «простых» запросов, применяется для обработки запросов INSERT, UPDATE, DELETE.
  3. $wpdb->get_row ($sql, $type, $offset); — получение одной строки из всего результата запроса, где:
    • $type — см. выше;
    • $offset — номер строки, которая будет выбрана из всего результата (хинт: можно генрировать $offset случайным образом и получать случайную строку из запроса).
  4. $wpdb->get_var ($sql, $col_offset, $row_offset); — этот метод позволяет получить одно значение из всего результата запроса, соответственно:
    • $col_offset — см. выше;
    • $row_offset — номер столбца, из которого будет взят результат.

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

Написание плагина для Wordpress почти закончено

Что ж, вот мы и рассмотрели функциональную часть плагина. В принципе, он уже должен быть работоспособен. Нам осталось только интернационализировать наш плагин и познакомиться с порядком его добавления в репозитории wordpress.org.
Этим мы и займёмся в следующих выпусках руководства «Как написать плагин для Wordpress», а пока по-прежнему можно скачать архив с плагином-примером.

Всем удачи! :)

Еще на похожие темы:

Comments

2 комментария to “Пишем плагин для Wordpress. Функциональная составляющая (часть 5)”

  1. Матвей пишет:

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

Leave a Reply