Создание плагина для WordPress. Часть 5
Доброго времени суток. Мы продолжаем создавать плагин для WordPress. И в данной статье мы уже приступим к написанию самого плагина. Но прежде, чем приступить к созданию плагина для WordPress давайте вспомним, что мы уже рассмотрели:
- “Создание плагина “Популярные статьи” — Часть 1”, в которой мы рассмотрели два принципа создания данного плагина: используя собственную таблицу в базе данных или использовать стандартную таблицу WordPress(данный способ и реализовали), а также рассмотрели основное понятие плагина в WordPress.
- В статье “Создание плагина “Популярные статьи” Часть 2” мы реализовали первый способ, который использует собственную таблицу для хранения данных.
- В “Создание плагина для WordPress: Хуки в WordPpress: action и filter. Часть 3” мы познакомились с такими понятиями как хуки в WordPress: action и filter.
- И в статье “Создание плагина для WordPress: структура плагина. Часть 4.” мы разобрали структуру плагина.
А в этой статье мы создадим плагин “Популярных статей” по варианту, когда будем использовать собственную таблицу. Ну, что ж приступим.
Первое, что мы сделаем создадим папку popular_post_1 в <наш сайт>/wp-content/plugins/
Второе создадим в ней файл popular_post_1.php — это основной файл нашего плагина.
Добавление основной информации о плагине.
Поместим в наш файл popular_post_1.php основное описание нашего плагина. Это необходимо для того, чтобы WordPress увидел создаваемый нами плагин. Для этого добавим следующий код:
<?php /* Plugin Name: Popular Post Plugin URI: http://web-programming.com.ua Description: Показ популярных постов по количеству просмотров. Version: 1.0 Author: Nikolaenkov Roman Author URI: http://web-programming.com.ua */ ?>
где:
- Plugin Name — указываем название плагина
- Plugin URI — указываем домашнюю страницу плагина
- Description — вводим краткое описание плагина
- Version — указываем версию плагина
- Author — указываем автора плагина
- Author URI — адрес домашней страницы автора плагина
После ввода данной информации мы можем перейти в админку нашего сайта. И во вкладке “Плагины” мы видим наш вновь созданный плагин Popular Post, который мы можем активировать.
Но пока данный плагин не несет какой-либо функциональной нагрузки.
Исправим это.
Добавляем действия при активации плагина.
Так, как наш плагин должен использовать собственную таблицу данных для хранения количества просмотров, то нам необходимо при активации плагина создавать в базе данных таблицу. В нашем случае таблица называется popularposts. Создадим функцию, которая создает эту таблицу в базе данных:
function install(){ global $wpdb; $wpdb->query("CREATE TABLE `".$wpdb->prefix."popularposts` ( `ID` INT(10) UNSIGNED NULL AUTO_INCREMENT, `count` INT DEFAULT '0', `post_id` INT, PRIMARY KEY (`ID`))"); }
Теперь нам необходимо вызвать данную функцию при активации нашего плагина. Для этого мы будем использовать хук WordPress register_activation_hook. Добавим в наш файл следующий код:
register_activation_hook( __FILE__, 'install');
Теперь, если Вы активируете созданный нами плагин, то в базе данных увидите новую таблицу <префикс>_popularposts.
Добавляем действия при деактивации плагина.
При активации нашего плагина у нас создается таблица. Но если мы деактивируем плагин, то таблица останется в базе данных, а это очень плохо. Давайте сделаем так, чтобы при деактивации плагина данная таблица удалялась из базы данных. Создадим функцию, которая будет за это отвечать:
function deactivate(){ global $wpdb; $wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}popularposts"); }
Теперь нам необходимо вызывать эту функцию при деактивации плагина. Для этого мы будем использовать хук WordPress register_deactivation_hook. Добавим в наш файл следующий код:
register_deactivation_hook( __FILE__, 'deactivate');
Отлично проверим. При активации вновь созданного плагина в базе данных должна создаваться таблица <префикс>_popularposts. А при деактивации данная таблица должна удаляться.
Вот, что у нас должно получиться в файле popular_post_1
<?php /* Plugin Name: Popular Post Plugin URI: http://web-programming.com.ua Description: Показ популярных постов по количеству просмотров. Version: 1.0 Author: Nikolaenkov Roman Author URI: http://web-programming.com.ua */ //Активация плагина function install(){ global $wpdb; $wpdb->query("CREATE TABLE `".$wpdb->prefix."popularposts` ( `ID` INT(10) UNSIGNED NULL AUTO_INCREMENT, `count` INT DEFAULT '0', `post_id` INT, PRIMARY KEY (`ID`))"); } register_activation_hook( __FILE__, 'install'); //Деактивация плагина function deactivate(){ global $wpdb; $wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}popularposts"); } register_deactivation_hook( __FILE__, 'deactivate');
Теперь можно приступить к реализации нашего функционала.
Создание функционала в плагине.
Как Вы помните из предыдущих статей за добавления данных о количестве просмотров у нас отвечала функция setViews(), которую мы поместили в файл functions.php. Уберем все, что мы добавили в файл functions.php нашей темы (это нам уже не нужно). А в файл нашего плагина добавим следующий код:
function setViews() { if (is_single()) : $postID = get_the_ID(); global $wpdb; $table = $wpdb->prefix."popularposts"; $result = $wpdb->get_results("SELECT * FROM $table WHERE post_id = $postID"); foreach ($result as $c): $count = $c->count; endforeach; if (!isset($count)) : $count = 1; $wpdb->insert($table, array('post_id'=>$postID,'count'=>$count), array('%d','%d') ); else: $count = $count+1; print_r($count); $wpdb->update( $table, array('count' =>$count), array('post_id'=>$postID), array('%d'), array('%d')); endif; endif; }
Данную функцию необходимо вызывать, когда пользователь заходит на конкретный пост. Для этого мы воспользуемся следующим action the_post. Добавим в наш плагин следующий код:
add_action('the_post','setViews')
В итоге наш основной файл плагина должен выглядеть так:
<?php /* Plugin Name: Popular Post Plugin URI: http://web-programming.com.ua Description: Показ популярных постов по количеству просмотров. Version: 1.0 Author: Nikolaenkov Roman Author URI: http://web-programming.com.ua */ //Активация плагина function install(){ global $wpdb; $wpdb->query("CREATE TABLE `".$wpdb->prefix."popularposts` ( `ID` INT(10) UNSIGNED NULL AUTO_INCREMENT, `count` INT DEFAULT '0', `post_id` INT, PRIMARY KEY (`ID`))"); } register_activation_hook( __FILE__, 'install'); //Деактивация плагина function deactivate(){ global $wpdb; $wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}popularposts"); } register_deactivation_hook( __FILE__, 'deactivate'); // Установка и добавление счетчика просмотров function setViews() { if (is_single()) : $postID = get_the_ID(); global $wpdb; $table = $wpdb->prefix."popularposts"; $result = $wpdb->get_results("SELECT * FROM $table WHERE post_id = $postID"); foreach ($result as $c): $count = $c->count; endforeach; if (!isset($count)) : $count = 1; $wpdb->insert($table, array('post_id'=>$postID,'count'=>$count), array('%d','%d') ); else: $count = $count+1; print_r($count); $wpdb->update( $table, array('count' =>$count), array('post_id'=>$postID), array('%d'), array('%d')); endif; endif; } add_action('the_post','setViews') ?>
Проверим, что у нас получилось:
- При активации плагина — должна появиться таблица <префикс>_popularposts
- При переходе по конкретным постам — в таблице должно отображаться количество просмотров и id постов.
- При деактивации плагина — таблица <префикс>_popularposts должна уничтожаться.
Отлично. Но мы еще не сделали вывод (отображение) популярных постов. А за это отвечает виджет. Что такое виджет и как создать виджет для отображения популярных постов мы рассмотрим в следующих статьях. Так, что следите за обновлениями моего блога. А пока все.
[…] плагин для WordPress. Так, мы с Вами в прошлой статье создали плагин популярных статей. Наш плагин уже фиксирует в таблицу количество […]
[…] […]
[…] WordPress. А точнее плагин мы уже создали. Так в статье “Создание плагина для WordPress. Часть 5” мы создали сам плагин. А в статье “Создание плагина […]