Статьи

Как написать плагин WordPress «Самые популярные по просмотрам»

По мере того, как вы продолжаете писать для WordPress все больше и больше, уровень сложности и сложности ваших плагинов в конечном итоге выйдет далеко за пределы простой внутренней обработки данных, как показано в нашей статье для начинающих . В этой части мы подробно рассмотрим взаимодействие с базой данных, виджеты администратора и виджеты боковой панели. Сегодняшним примером будет пользовательский плагин «Most Popular by Views», который создает для нас виджет административной области и виджет боковой панели для посетителей.

Учебник теперь на Wptuts +

Прежде чем мы откроем нашу IDE или напишем какой-либо код, вы всегда должны составить список функций, которые ваш плагин будет иметь и не будет иметь (по крайней мере, на начальном этапе вы всегда сможете расширить его позже). Для нашего плагина «Самые популярные по просмотрам» нашей основной функцией является отображение списка самых популярных постов (скажем, топ-10). Во-вторых, мы также разместим список в админке как некий высокотехнологичный анализ. Наконец, мы дадим разработчикам возможность отображать его где угодно, делая его доступным в качестве виджета боковой панели и с помощью простой функции.

  • Создает список из десяти самых популярных сообщений на основе просмотров
  • Список отображается в области администрирования в виде низкотехнологичной аналитики
  • Список доступен как виджет боковой панели и функции
Готовые виджеты

Прежде чем мы сможем отобразить самые популярные сообщения, нам нужно собрать данные о том, какие сообщения просматриваются и как часто, но даже прежде чем мы сможем это сделать, нам нужно где-то разместить все эти данные. Внутри нового файла плагина давайте создадим новую функцию ( ppbv_create_table ), которая проверит, существует ли наша таблица. Если этого не произойдет, мы создадим его. Наш способ сделать это довольно прост; мы будем использовать $ wpdb-> get_results для запуска оператора SQL, который проверяет таблицу с именем «wp_popular_by_views». Если таблица не найдена, get_results вернет ноль. Если это так, мы будем использовать $ wpdb-> query для записи в новую таблицу. Мы запускаем эту функцию каждый раз, когда плагин активирован.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
/**
 * Plugin Name: Popular Posts by Views
 * Plugin URI: http://net.tutsplus.com
 * Description: Create a widget to show your most popular articles based on views.
 * Version: 1.0
 * Author: Jonathan Wolfe
 * Author URI: http://fire-studios.com
 * License: GPL2
 * .
 * This plugin and its accompanying tutorial are written for Nettuts+ at http://net.tutsplus.com
 * .
 */
 
global $wpdb;
$ppbv_tablename = $wpdb->prefix.’popular_by_views’;
 
function ppbv_create_table(){
    global $wpdb, $ppbv_tablename;
    $ppbv_table = $wpdb->get_results(«SHOW TABLES LIKE ‘{$ppbv_tablename}'» , ARRAY_N);
    if(is_null($ppbv_table)){ // if we don’t have a table
        $create_table_sql = «CREATE TABLE {$ppbv_tablename} (
            id BIGINT(50) NOT NULL AUTO_INCREMENT,
            post_id VARCHAR(255) NOT NULL,
            views BIGINT(50) NOT NULL,
            PRIMARY KEY (id),
            UNIQUE (id)
        );»; // be careful with SQL syntax, it can be VERY finiky
        $wpdb->query($create_table_sql);
    }
}
register_activation_hook(__FILE__,’ppbv_create_table’);
?>

Теперь, когда у нас есть таблица для хранения наших данных, нам нужно перехватить наши данные. Мы создадим новую функцию ( ppbv_page_viewed ), которую мы прикрепим к хуку wp_head, чтобы она запускалась при каждой загрузке страницы. Внутри этой функции мы собираемся сделать одну из двух вещей, после того как проверим, есть ли текущая страница в базе данных: увеличить ее количество просмотров на единицу или, если ее нет в базе данных, добавить ее в базу данных. Чтобы выяснить, находится ли текущая страница в базе данных, мы будем использовать объект $ post для получения «post_ID». Этот шаг на самом деле очень прост, потому что мы не собираем никаких сложных данных; комментарии в коде предоставляют подробные пошаговые инструкции в этом процессе.

База данных и процесс просмотра

Далее, мы собираемся использовать эти данные, которые мы только что добавили в нашу базу данных, чтобы создать упорядоченный список внутри виджета панели администратора. Этот процесс включает две функции: первая ( ppbv_admin_widget ) для генерации всего внутри виджета и вторая ( ppbv_add_admin_widget ) для создания самого виджета. Давайте начнем с функции содержимого, pppbv_admin_widget. Во-первых, поскольку мы создаем упорядоченный список, давайте повторим открывающие теги для этого. Затем мы глобализируем переменные $ wpdb и $ ppbv_tablename, чтобы мы могли получить доступ к базе данных и получить десять самых просматриваемых идентификаторов поста. Затем мы будем запускать возвращаемый массив с помощью оператора foreach и использовать каждый отдельный идентификатор для создания элемента списка и создания ссылки на эту страницу, а также распечатывать ее представления (отформатированные с помощью number_format, чтобы было легче читать).

Теперь, когда мы генерируем контент, давайте создадим виджет. Внутри функции создания, ppbv_add_admin_widget, мы собираемся вызвать другую функцию, встроенную в WordPress: wp_add_dashboard_widget . Все, что нам нужно сделать, это дать wp_add_dashboard_widget следующие параметры: [идентификатор контейнера], [заголовок в контейнере], [функция содержимого] (наши заполняются так: «Popular_by_views», «Самые популярные сообщения по представлениям», «ppbv_admin_widget» «). Последнее, что нам нужно сделать, это присоединить нашу функцию создания к хуку wp_dashboard_setup.

И теперь у нас есть рабочий виджет панели инструментов, который могут видеть администраторы.

Виджет панели администратора

Создание виджета боковой панели довольно безболезненно; к сожалению, некоторые части не документированы (например, как сделать их единообразными), но мы рассмотрим это. Давайте начнем с написания новой функции ( ppbv_display_widget ) и внутри нее мы будем копировать нашу функцию содержимого из виджета администратора (я предлагаю переместить глобальные вызовы наверх, за пределы <ol> echo, функции для ясность позже). Затем следующим шагом будет регистрация нашего виджета в WordPress через wp_register_sidebar_widget (параметры: [идентификатор контейнера], [заголовок на странице виджета], [функция содержимого] || ‘Popular_by_views’, ‘Самые популярные сообщения по просмотрам’, ‘ppbv_display_widget’).

Это фактически необходимый минимум для виджета боковой панели, но к тому, что 90% всех динамических боковых панелей имеют определенные параметры настройки стиля виджетов, поэтому давайте подстроим наш виджет к этим настройкам. Первое, что нам нужно сделать, это добавить параметр в нашу функцию ppbv_display_widget, $ args . Добавив этот параметр внутрь функции, используя для нее функцию extract , мы получим доступ к нескольким переменным, которые позволят стилизовать наш плагин так же, как остальные виджеты на боковой панели.

«Нам не нужно предоставлять входные данные для $ args, WordPress сделает это за нас».

Благодаря $ args и extract у нас теперь есть доступ к следующим переменным, которые мы можем отобразить для стилизации нашего виджета:

  • $ before_widget
  • $ after_widget
  • $ before_title
  • $ after_title
Виджет боковой панели

Не каждый, кто использует этот плагин, захочет использовать виджет, поэтому крайне важно, чтобы мы предоставили им другой способ отображения нашего списка. К счастью, это так же просто, как клонирование нашей функции ppbv_display_widget и удаление частей виджета, заменяя их стандартным жестко закодированным HTML.


Вот и все, вы успешно создали свой собственный плагин WordPress «Самые популярные по просмотрам». Не слишком сложно, не так ли?

Когда вы овладеете искусством разработки плагинов для WordPress, зайдите на CodeCanyon.net и начните продавать свои плагины с прибылью!