Создание плагина “Популярные статьи” — Часть 1
Доброго времени суток. Я хочу начать новую серию уроков, посвященных созданию плагина в WordPress. А разрабатывать мы с Вами будем плагин популярных статей. Почему именно плагин популярных статей? Потому, что его легко реализовать, а основная задача данных уроков не в написании кода на php, а освоения алгоритма создания плагина для WordPress. Так, что кому интересно читаем дальше, ну а остальные можете найти что-то интересное для себя на моем блоге.
Это первый урок из серии создания плагина популярных статей для CMS WordPress. В данном уроке мы разберем:
- Что такое плагин для WordPress.
- Выбор реализации плагина (рассмотрим два способа реализации данного плагина их плюсы и минусы)
- Напишем php код (первый способ, а второй рассмотрим в следующей статье) и внедрим его вначале в тему и уже в следующих статьях на основе данного кода напишем свой собственный плагин.
И так приступим…
Что такое плагин WordPress?
Плагин в WordPress — это кусок кода, который добавляет функциональности ресурсу, работающего на WordPress. Отлично, с данным вопросом мы разобрались. Следующий вопрос “А где лучше расширять функциональность ресурса: в плагинах или в теме?”. Ответом конечно будет, что расширять функциональность сайтов лучше в плагинах. Почему? Прочитайте статью “Плагины против тем в WordPress или где лучше наращивать функционал ресурса” и Вы получите ответ.
Мы с Вами рассмотрели, что такое плагин в WordPress и как лучше расширять функциональность ресурса работающего под управлением CMS WordPress.
Выбор реализации плагина.
Давайте определим по каким критериям наш будущий плагин будет отбирать популярные статьи. На мой взгляд — это два критерия: количество просмотров статьи и количество комментариев. Но мы для простоты будем учитывать только один критерий — это количество просмотров. Плагин популярных статей можно реализовать несколькими способами:
- первый способ, когда наш плагин будет все данные записывать в таблицу postmeta. Плюс не нужно создавать дополнительную таблицу, для работы с данной таблицей используем уже реализованный функции в WordPress. Минусы данного метода при удалении нашего плагина нужно вычищать таблицу postmeta от данных созданных нашим плагином, что может быть проблематично.
- второй способ — это создать новую таблицу при установке данного плагина, в которую и будет записывать наш плагин все данные. Плюс данного метода при удалении нашего плагина мы спокойно удаляем таблицу. Минус дополнительная таблица в базе данных.
Какой способ выбрать решать Вам. Я сделаю плагин как первым способом, так и вторым. И в итоге мы получим два плагина популярных статей, первый будет использовать внутреннюю таблицу 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)
Параметры:
- $post_id — id поста из котрого мы хотим получить данные.
- $key — строка в поле meta_key из которого мы хотим получить значение.
- $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)
Параметры:
- $post_id — id поста в строке, которую мы хотим удалить
- $meta_key — мета ключ в строке, которую мы хотим удалить.
- $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)
Парметры:
- $post_id — id поста
- $meta_key — значение поля meta_key
- $meta_value — значение поля meta_value
- $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)
Параметры:
- $post_id — id поста поля которого будут изменены
- $meta_key — значение поля meta_key поле meta_value, которого будет изменено.
- $meta_value — новое значение поля meta_value
- $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. Будьте внимательны данная функция переопределяет данный цикл. Принимает множество параметров, о которых я рекомендую прочитать в официальной документации. Ну, я остановлюсь только на тех, которые использовал:
- posts_per_page — количество вывода постов, в нашем случае выводится пять постов
- meta_key — поле из таблицы postmeta, в нашем случае postmeta = ‘posts_views’
- orderby — по какому полю будет происходит сортировка, в нашем случае сортировка по полю meta_value значение, которого является числом
- order — направление сортировки, в нашем случае от большего к меньшему.
И в конце обязательно используйте функцию wp_reset_query
Функция wp_reset_query
Данная функция аннулирует последний произвольный запрос, созданный при помощи функции query_posts().
Проверяем, что у нас получилось.
Ну, вот на этом данную статью я заканчиваю, если у Вас возникли вопросы, то пишите в комментариях я обязательно на них отвечу. А в следующей статье мы рассмотрим второй способ реализации вывода популярных постов на ресурсе под управлением WordPress.
[…] создание плагина для WordPress. Так в прошлой статье “Создание плагина “Популярные статьи”” мы рассмотрели первый способ реализации данного […]
[…] немного отвлечемся и вспомни, что мы уже сделали: разобрали понятие “Плагин” и разобрали первый способ…, разобрали второй способ реализации плагина […]
[…] “Создание плагина “Популярные статьи” — Часть 1”, в которой мы рассмотрели два принципа создания данного плагина: используя собственную таблицу в базе данных или использовать стандартную таблицу WordPress(данный способ и реализовали), а также рассмотрели основное понятие плагина в WordPress. […]
У меня не в сайтбар добавило.