![]() |
Статьи | Новости | Контакты | |||||||
|
||||||||||
|
Электронные деньги (0), Блоги (5)
25.01.2008 |
||||||||||
![]() |
На сегодняшний день Wordpress является самым популярным блоговым движком с открытым исходным кодом — его используют 71 процент пользователей, ведущих автономные блоги. Движок очень просто устанавливается и настраивается, поддерживает XHTML и CSS, позволяет выбрать тему оформления, поддерживает использование подключаемых модулей (плагинов).
Для Wordpress разработано огромное количество плагинов, способных удовлетворить все мыслимые и немыслимые потребности пользователей. В предыдущих обзорах мы подробно рассмотрели плагины для работы с комментариями, получения подробной статистики посещаемости блога, борьбы со спамом, монетизации блога, синхронизации блога с «ЖЖ», а сегодня поговорим о том, как самим написать простейший плагин.
Все плагины Wordpress хранятся в каталоге
Для начала определимся с текстовым редактором. В последних версиях Wordpress (2.2 и выше) все файлы хранятся в
Плагин начинается с блока комментария, который содержит название, версию и URI плагина, а также сведения об авторе:
<?php
/*
Plugin Name: Topics List
Plugin URI: http://www.pluginsite.com/topicslist
Description: A plugin that generates topics list by come category.
Author: homo.creativus
Version: 1.0
Author URI: http://www.authorsite.com
*/
?>
Этот блок обязателен: если его нет, то плагин не будет добавлен в список.
![]() |
| Активация плагина в административной панели |
После блока комментария идет сам код плагина. Обычно это несколько функций (в терминах языка PHP), которые выполняют необходимые действия и возвращают результат своей работы.
Наш плагин будет формировать список последних статей заданной рубрики в формате «дата, название статьи», причем название статьи будет ссылкой на эту статью. Число статей и формат списка могут изменяться.
Список последних статей можно вывести на главную страницу сайта (пример показан на рисунке) или после основного текста каждой записи этой рубрики.
Определимся с параметрами функции:
function get_topics_list(
$no_posts = 5, $before = "<li>", $after = "</li>", $post_cat)
{
}
Первый параметр $no_posts — число статей в списке, $before и $after — начальный и конечный теги, в которые будет заключен элемент списка (для списка в HTML это <li> и </li> соответственно, но список статей можно выводить и в одну строку), последний параметр — ID рубрики (посмотреть его можно в разделе «Управление — Рубрики» административной панели).
![]() |
| Пример работы плагина |
Для начала нужно объявить в функции глобальную переменную, содержащую объект базы данных Wordpress:
global $wpdb;
С помощью этой переменной мы и будем выполнять запросы к базе данных и получать их результаты.
Общий механизм таков. Сначала сформируем обыкновенный SQL-запрос для получения необходимых данных. В данном случае получаем список последних записей заданной рубрики:
$request = "SELECT ID, object_id, post_title, post_date
FROM $wpdb->term_relationships, $wpdb->posts
WHERE term_taxonomy_id = $post_cat
AND post_type = 'post' AND object_id = ID
ORDER BY object_id DESC
LIMIT $no_posts";
Здесь ID, object_id, post_title, post_date — необходимые поля таблиц (идентификатор записи, ее название и дата публикации соответственно),
Этот запрос соответствует Wordpress версии 2.3 и выше со встроенным облаком тегов, где была изменена структура таблиц, для более ранних версий Wordpress со старой структурой таблиц запрос будет таким:
$request = "SELECT rel_id, post_id, ID, post_title, post_date
FROM $wpdb->post2cat, $wpdb->posts
WHERE category_id = $post_cat AND post_id = ID
ORDER BY rel_id DESC
LIMIT $no_posts";
После того как запрос сформирован, передаем его в метод get_results для получения результата выборки:
$post_ids = $wpdb->get_results($request);
Эта функция возвращает массив записей. Каждый элемент массива, в свою очередь, тоже массив, содержащий информацию о записи (ее идентификатор, название и дату).
Далее нам нужно просто обработать элементы массива и сформировать результат:
if($post_ids)
{
foreach ($post_ids as $post)
{
if ($post)
{
$post_title = stripslashes($post->post_title);
$permalink = get_permalink($post->ID);
$post_date = substr($post->post_date, 0, 10);
$post_time = substr($post->post_date, 11, 5);
$date = explode("-", $post_date);
$output .= $before;
$output .= $date[2] . $date[1] . $date[0];
$output .= " $post_time ";
$output .= "<a href=\"$permalink\"";
$output .= "rel=\"bookmark\" title=\"Permanent Link: ";
$output .= htmlspecialchars($post_title, ENT_COMPAT);
$output .= "\">$post_title</a>";
$output .= $after;
}
else
{
echo «None found»;
}
}
}
Каждый элемент массива $post содержит информацию о записи — как раз тот набор полей, который был выбран из таблиц. Для получения значения конкретного поля (например, даты) нужно обратиться к элементу массива $post, название которого совпадает с названием соответствующего поля таблицы
Для каждой записи в цикле формируется строка «дата, название статьи», причем название статьи является ссылкой на запись.
![]() |
| Еще один пример работы плагина |
После того как результирующая строка сформирована, возвращаем ее:
return $output;
Вот и все. Для вывода списка последних статей на главной странице нужно добавить вызов функции get_topics_list в файл index.php текущей темы (найти его можно в каталоге
<div class="index_links">
<h3>Новости</h3>
<ul>
<?php echo get_topics_list(10, "<li>", "</li>", 10); ?>
</ul>
<h3>Статьи, периодика</h3>
<ul>
<?php echo get_topics_list(10, "<li>", "</li>", 11); ?>
</ul>
</div>
Итак, мы написали простейший плагин для Wordpress. Этот же механизм можно использовать для получения списка последних комментариев заданного пользователя, получения последних записей, которые комментировал данный пользователь, и многого другого. Если вас заинтересовала эта тема, то подробное описание API плагинов Wordpress можно найти здесь.
Copyright © 2003—2009 Все права защищены
При использовании материалов сайта ссылка на hostinfo.ru обязательна







