Создание плагина “Популярные статьи” — Часть 1

Ромчик
3

Создание плагина для WordPressДоброго времени суток. Я хочу начать новую серию уроков, посвященных созданию плагина в WordPress. А разрабатывать мы с Вами будем плагин популярных статей. Почему именно плагин популярных статей? Потому, что его легко реализовать, а основная задача данных уроков не в написании кода на php, а освоения алгоритма создания плагина для WordPress. Так, что кому интересно читаем дальше, ну а остальные можете найти что-то интересное для себя на моем блоге.

Это первый урок из серии создания плагина популярных статей для CMS WordPress. В данном уроке мы разберем:

  1. Что такое плагин для WordPress.
  2. Выбор реализации плагина (рассмотрим два способа реализации данного плагина их плюсы и минусы)
  3. Напишем php код (первый способ, а второй рассмотрим в следующей статье) и внедрим его вначале в тему и уже в следующих статьях на основе данного кода напишем свой собственный плагин.

И так приступим…

Что такое плагин WordPress?

Плагин в WordPress — это кусок кода, который добавляет функциональности ресурсу, работающего на WordPress. Отлично, с данным вопросом мы разобрались. Следующий вопрос “А где лучше расширять функциональность ресурса: в плагинах или в теме?”. Ответом конечно будет, что расширять функциональность сайтов лучше в плагинах. Почему? Прочитайте статью “Плагины против тем в WordPress или где лучше наращивать функционал ресурса” и Вы получите ответ.
Мы с Вами рассмотрели, что такое плагин в WordPress и как лучше расширять функциональность ресурса работающего под управлением CMS WordPress.

Выбор реализации плагина.

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

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

Какой способ выбрать решать Вам. Я сделаю плагин как первым способом, так и вторым. И в итоге мы получим два плагина популярных статей, первый будет использовать внутреннюю таблицу postmeta (мы научимся добавлять, удалять и редактировать данные этой таблицы стандартными функциями) и второй плагин будет использовать свою таблицу (научимся создавать таблицу при активации плагина, добавлять, удалять и редактировать данные, удалять таблицу при деактивации плагина).

Реализация PHP кода — популярные статьи.

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


<?php
function setViews($postID) {
$key = 'post_views';
$count = get_post_meta($postID, $key, true);
if($count==''){
            $count = 0;
            delete_post_meta($postID, $key);
            add_post_meta($postID, $key, '0');
}else{
            $count++;
            update_post_meta($postID, $key, $count);
}
}
?>

Давайте подробно рассмотрим функцию, которую мы создали.

Функция get_post_meta

Функция get_post_meta возвращает значения поля meta_value с указанным ключем и определенным id поста.
get_post_meta($post_id, $key, $single)
Параметры:

  1. $post_id — id поста из котрого мы хотим получить данные.
  2. $key — строка в поле meta_key из которого мы хотим получить значение.
  3. $single — если установлена верно, то функция будет возвращать один результат в виде строки. Если ложно, или не установлен, то функция возвращает массив пользовательских полей.

Т.е. у нас есть таблица postmeta с полями meta_id, post_id, meta_key, meta_value. И мы получаем значение поля meta_vlaue, где post_id = $postID и meta_key = ‘post_views’.
Следующая функция, которую мы использовали delete_post_meta

Функция delete_post_meta

Функция delete_post_meta удаляет указанную строку.
delete_post_meta($post_id, $meta_key, $meta_value)
Параметры:

  1. $post_id — id поста в строке, которую мы хотим удалить
  2. $meta_key — мета ключ в строке, которую мы хотим удалить.
  3. $meta_value — значение meta_value в строке, которую хотим удалить.

В нашем случае мы удаляем строку, в которой поле post_id = $postID и поле meta_key = ‘post_views’
Следующая функция, которую мы использовали  add_post_meta

Функция add_post_meta

Функция add_post_meta служит для добавления строки в таблицу postmeta.
add_post_meta($post_id, $meta_key, $meta_value, $unique)
Парметры:

  1. $post_id — id поста
  2. $meta_key — значение поля meta_key
  3. $meta_value — значение поля meta_value
  4. $unique — если поставить true, то поле meta_key будет уникальным, по умолчанию false.

В нашем случае мы добавляем строку в таблицу postmeta со следующими значениями: поле post_id = $postID, поле meta_key = ‘post_views’, поле meta_value = ‘0’.
И последнюю функцию, которую мы использовали update_post_meta

Функция update_post_meta

Функция update_post_meta служит для обновления поля meta_value
update_post_meta($post_id, $meta_key, $meta_value, $prev_value)
Параметры:

  1. $post_id — id поста поля которого будут изменены
  2. $meta_key — значение поля meta_key поле meta_value, которого будет изменено.
  3. $meta_value — новое значение поля meta_value
  4. $prev_value — старое значение meta_value. По умолчанию пустое. Необходимо, если у нас есть несколько полей meta_key c одинаковыми значениями.

Мы написали функцию, которая реализует счетчик просмотра постов и записывает данные в таблицу postmeta.
Теперь нам нужно вызвать эту функцию при просмотре определенного поста. Откройте файл single.php и добавьте в него следующий код:


<?php
   setViews(get_the_ID());
?>

Тут мы использовали функцию get_the_ID(), которая возвращает id текущего поста.
Давайте проверим, что у нас получилось, перейдем на любой пост нашего сайта и проверим таблицу postmeta. Ищем строки, где поле meta_key = ‘post_views’ и смотрим у них значения поля meta_value, которое должно изменяться при переходе на соответствующий пост.

Вывод популярных статей

Теперь давайте реализуем функцию вывода популярных постов. Пусть вывод популярных постов будет в сайдабаре. Тогда откроем sidebar.php нашего шаблона и добавим в него следующий код:

<?php
    $args = array( 'posts_per_page' => 5, 'meta_key' => 'post_views', 'orderby' => 'meta_value_num', 'order' => 'DESC' );
    query_posts($args);
?>
<h3>Популярные статьи</h3>
<ul>
<?php while ( have_posts() ) : the_post(); ?>
<li><a href="<?php the_permalink();?>"><?php the_title();?></a></li>
<?php endwhile; ?>
<?php wp_reset_query();?>
</ul>
</div>

Давайте подробнее рассмотрим код, тут мы использовали функцию query_posts

Функция query_posts

Функция query_posts служит для указания параметров вывода постов в цикле WordPress. Будьте внимательны данная функция переопределяет данный цикл. Принимает множество параметров, о которых я рекомендую прочитать в официальной документации. Ну, я остановлюсь только на тех, которые использовал:

  1. posts_per_page — количество вывода постов, в нашем случае выводится пять постов
  2. meta_key — поле из таблицы postmeta, в нашем случае postmeta = ‘posts_views’
  3. orderby — по какому полю будет происходит сортировка, в нашем случае сортировка по полю meta_value значение, которого является числом
  4. order — направление сортировки, в нашем случае от большего к меньшему.

И в конце обязательно используйте функцию wp_reset_query

Функция wp_reset_query

Данная функция аннулирует последний произвольный запрос, созданный при помощи функции query_posts().
Проверяем, что у нас получилось.
Ну, вот на этом данную статью я заканчиваю, если у Вас возникли вопросы, то пишите в комментариях я обязательно на них отвечу. А в следующей статье мы рассмотрим второй способ реализации вывода популярных постов на ресурсе под управлением WordPress.

Понравилась статья? Поделись с друзьями.
  • Add to favorites
  • Добавить ВКонтакте заметку об этой странице
  • Twitter
  • Facebook
  • Мой Мир
  • LiveJournal
  • Одноклассники
  • Блог Я.ру
  • MySpace
  • FriendFeed
  • В закладки Google
  • Google Buzz
  • Яндекс.Закладки
  • Reddit
  • StumbleUpon
  • Technorati
  • del.icio.us
  • БобрДобр
  • LinkedIn
  • Memori.ru
  • Сто закладок
  • Blogger

  • Создание плагина “Популярные статьи” Часть 2 | Все о WEB программировании - 08.01.2013 в 15:14

    […] создание плагина для WordPress. Так в прошлой статье “Создание плагина “Популярные статьи””  мы рассмотрели первый способ реализации данного […]

  • Создание плагина для WordPress: структура плагина. Часть 4 | Все о WEB программировании - 21.01.2013 в 10:03

    […] немного отвлечемся и вспомни, что мы уже сделали: разобрали понятие “Плагин” и разобрали первый способ…, разобрали второй способ реализации плагина […]

  • Создание плагина для WordPress. Часть 5 | Все о WEB программировании - 13.02.2013 в 09:20

    […] “Создание плагина “Популярные статьи” — Часть 1”, в которой мы рассмотрели два принципа создания данного плагина: используя собственную таблицу в базе данных или использовать стандартную таблицу WordPress(данный способ и реализовали), а также рассмотрели основное понятие плагина в WordPress. […]

  • ©2012-2017 По всем вопросам обращайтесь через форму обратной связи

    Яндекс.Метрика