От автора: WordPress – возможно, самая популярная система управления контентом в интернете. По данным журнала Forbes под управлением данной CMS находится свыше 60 миллионов веб-сайтов, что, несомненно, ставит систему в ранг лидера. WordPress заманивает огромным количеством плагинов. Хотите создать интернет-магазин? Есть плагин WooCommerce. Хотите создать портал, посвященный работе? Вот вам WP Job Manager.
В этом уроке мы научимся создавать плагин WordPress «Счетчик авторизации пользователей», который подсчитывает количество входов в учетную запись на сайте под управлением WordPress, значение будет отображаться в дополнительной колонке на странице списка пользователей.
Разработка плагина
Большинство файлов в плагине WordPress составляют файлы PHP, и хранятся они в /wp-content/plugins/. Заранее говорю, что вы должны уметь подключаться к серверу через FTP/SFTP/SCP или SSH. Создайте файл плагина wordpress-login-count.php. В конце урока мы получим готовый плагин. Сперва, необходимо добавить шапку плагина, без нее WordPress не поймет, что это плагин.
1 2 3 4 5 6 7 8 9 10 11 |
<?php /* Plugin Name: WordPress User Login Counter Plugin URI: //sitepoint.com Description: Count the number of times users log in to their WordPress account. Version: 1.0 Author: Agbonghama Collins Author URI: //w3guy.com License: GPL2 */ |
Затем необходимо задать PHP пространство имен и класс плагина, как показано ниже.
1 2 3 4 |
namespace Sitepoint\WordPressPlugin; class Login_Counter { // ... |
Все экшены и фильтры, необходимые плагину, будут храниться в методе init().
1 2 3 4 5 6 7 |
public function init() { add_action( 'wp_login', array( $this, 'count_user_login' ), 10, 2 ); add_filter( 'manage_users_columns', array( $this, 'add_stats_columns' ) ); add_action( 'manage_users_custom_column', array( $this, 'fill_stats_columns' ), 10, 3 ); } |
WordPress запускает хук wp_login, когда пользователь авторизовался, т.е. им можно воспользоваться для подсчета количество авторизаций. Функция count_user_login() производит подсчет:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/** * Save user login count to Database. * * @param string $user_login username * @param object $user WP_User object */ public function count_user_login( $user_login, $user ) { if ( ! empty( get_user_meta( $user->ID, 'sp_login_count', true ) ) ) { $login_count = get_user_meta( $user->ID, 'sp_login_count', true ); update_user_meta( $user->ID, 'sp_login_count', ( (int) $login_count + 1 ) ); } else { update_user_meta( $user->ID, 'sp_login_count', 1 ); } } |
Объяснение: сначала мы проверяем мета поле sp_login_count на пустоту. Если пустое, мы берем предыдущее сохраненное значение и добавляем к нему 1. Если непустое, то это значит, что пользователь авторизовался первый раз, т.е. в поле будет сохранено значение 1.
Для добавления колонки Login Count на странице списка пользователей используется фильтр manage_users_custom_column. Данный хук будет выводить количество авторизаций пользователя (смотрите скриншот выше).
Функция fill_stats_columns() в manage_users_custom_column добавляет новую колонку. Объяснение: первое условие if проверяет, находимся ли мы в колонке login_stat. Второй if проверяет поле на пустоту. Если условие выполняется, возвращается количество входов на сайт, в противном случае возвращается «No record found».
Метод get_instance() создает синглтон экземпляр класса и вызывает метод init() для регистрации экшенов и фильтров. И наконец, мы вызываем метода get_instance() для запуска PHP класса.
1 |
Login_Counter::get_instance(); |
Вот и все! Мы закончили кодить наш плагин счетчик.
Заключение
Чтобы более подробно разобраться в процессе создания плагина и его работе на сайте под управлением WordPress, скачайте проект с GitHub. Надеюсь, данный урок будет вам полезен при создании плагинов для WordPress. Пишите, что думаете в комментариях.
Автор: Agbonghama Collins
Источник: //www.sitepoint.com/
Редакция: Команда webformyself.