Создание плагина для WordPress. Часть 5

Ромчик
3

Создание плагина для WordPressДоброго времени суток. Мы продолжаем создавать плагин для WordPress. И в данной статье мы уже приступим к написанию самого плагина. Но прежде, чем приступить к созданию плагина для WordPress давайте вспомним, что мы уже рассмотрели:

  1. Создание плагина “Популярные статьи” — Часть 1”, в которой мы рассмотрели два принципа создания данного плагина: используя собственную таблицу в базе данных или использовать стандартную таблицу WordPress(данный способ и реализовали), а также рассмотрели основное понятие плагина в WordPress.
  2. В статье “Создание плагина “Популярные статьи” Часть 2” мы реализовали первый способ, который использует собственную таблицу для хранения данных.
  3. В “Создание плагина для WordPress: Хуки в WordPpress: action и filter. Часть 3” мы познакомились с такими понятиями как хуки в WordPress: action и filter.
  4. И в статье “Создание плагина для WordPress: структура плагина. Часть 4.” мы разобрали структуру плагина.

А в этой статье мы создадим плагин “Популярных статей” по варианту, когда будем использовать собственную таблицу. Ну, что ж приступим.

Первое, что мы сделаем создадим папку popular_post_1 в <наш сайт>/wp-content/plugins/
Второе создадим в ней файл popular_post_1.php — это основной файл нашего плагина.

Добавление основной информации о плагине.

Поместим в наш файл popular_post_1.php основное описание нашего плагина. Это необходимо для того, чтобы WordPress увидел создаваемый нами плагин. Для этого добавим следующий код:

<?php
/*
Plugin Name: Popular Post
Plugin URI: https://web-programming.com.ua
Description: Показ популярных постов по количеству просмотров.
Version: 1.0
Author: Nikolaenkov Roman
Author URI: https://web-programming.com.ua
*/
?>

где:

  1. Plugin Name — указываем название плагина
  2. Plugin URI — указываем домашнюю страницу плагина
  3. Description — вводим краткое описание плагина
  4. Version — указываем версию плагина
  5. Author — указываем автора плагина
  6. 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: https://web-programming.com.ua
Description: Показ популярных постов по количеству просмотров.
Version: 1.0
Author: Nikolaenkov Roman
Author URI: https://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: https://web-programming.com.ua
Description: Показ популярных постов по количеству просмотров.
Version: 1.0
Author: Nikolaenkov Roman
Author URI: https://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')
?>

Проверим, что у нас получилось:

  1. При активации плагина — должна появиться таблица <префикс>_popularposts
  2. При переходе по конкретным постам — в таблице должно отображаться количество просмотров и id постов.
  3. При деактивации плагина — таблица <префикс>_popularposts должна уничтожаться.

Отлично. Но мы еще не сделали вывод (отображение) популярных постов. А за это отвечает виджет. Что такое виджет и как создать виджет для отображения популярных постов мы рассмотрим в следующих статьях. Так, что следите за обновлениями моего блога. А пока все.

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

  • Создание плагина для WordPress. Часть 6 | Все о WEB программировании - 19.02.2013 в 08:23

    […] плагин для WordPress. Так, мы с Вами в прошлой статье создали плагин популярных статей. Наш плагин уже фиксирует в таблицу количество […]

  • Создание плагина для WordPress. Часть 8 | Все о WEB программировании - 05.03.2013 в 21:53

    […] WordPress. А точнее плагин мы уже создали. Так в статье “Создание плагина для WordPress. Часть 5” мы создали сам плагин. А в статье “Создание плагина […]

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

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