WordPress, пожалуй, самая популярная система управления контентом в сети.
По данным Forbes, более 60 миллионов сайтов по всему миру работают на нем. Подобные цифры показывают, что WordPress, без сомнения, является ведущим конкурентом, когда речь заходит о системах управления контентом (CMS).
Главной достопримечательностью WordPress является его большой пул плагинов. Хотите построить магазин электронной коммерции? Есть WooCommerce . Как насчет портала работы? Есть WP Job Manager .
В этом уроке мы узнаем, как создать плагин, который будет подсчитывать, сколько раз пользователи заходят на сайт под управлением WordPress, а статистика входа отображается в пользовательском столбце на странице списка пользователей.
Разработка плагинов
Большинство файлов в плагине WordPress состоят из файлов PHP, расположенных в каталоге /wp-content/plugins/
. В нашем примере файл будет называться wordpress-login-count.php
. Я предполагаю, что вы можете подключиться к вашему серверу по FTP / SFTP / SCP или SSH.
Если вы хотите следовать, создайте плагин PHP-файл wordpress-login-count.php
. Полный плагин будет доступен для скачивания в конце этого урока.
Прежде всего, включите заголовок плагина. Без заголовка WordPress не распознает плагин.
<?php /* Plugin Name: WordPress User Login Counter Plugin URI: http: //sitepoint.com Description: Count the number of times users log in to their WordPress account. Version: 1.0 Author: Agbonghama Collins Author URI: http: //w3guy.com License: GPL2 */
Затем мы добавляем пространство имен PHP и создаем класс плагина следующим образом.
namespace Sitepoint\WordPressPlugin; class Login_Counter { // ...
Все действия и фильтры, требуемые плагином, будут идти в метод init()
.
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 ); }
wp_login
действия wp_login
запускается WordPress, когда пользователь входит в систему, таким образом, это подходящая для нас ловушка для подсчета входа пользователя.
Функция count_user_login()
ниже выполняет подсчет.
/** * 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
.
Если false, мы получаем ранее сохраненный счетчик и увеличиваем его на единицу (1), а если true, это означает, что пользователь входит в систему впервые. В результате значение 1
будет сохранено в метаполе пользователя.
Фильтр manage_users_custom_column
для добавления дополнительного столбца на страницу списка пользователей WordPress используется для добавления столбца « manage_users_custom_column
пользователя в систему (см. Скриншот выше).
Функция fill_stats_columns()
подключенная к manage_users_custom_column
добавляет новый столбец.
/** * Fill the stat column with values. * * @param string $empty * @param string $column_name * @param int $user_id * * @return string|void */ public function fill_stats_columns ( $empty, $column_name, $user_id ) { if ( 'login_stat' == $column_name ) { if ( get_user_meta( $user_id, 'sp_login_count' , true ) !== '' ) { $login_count = get_user_meta( $user_id, 'sp_login_count' , true ); return "<strong>$login_count</strong>" ; } else { return __( 'No record found.' ); } } return $empty; }
Объяснение кода: первое условие if
гарантирует, что мы на самом деле в столбце login_stat
.
Следующее условие if
проверяет, существует ли счетчик для пользователя. Если true, он возвращает счетчик логинов или возвращает текст. No record found
.
Метод get_instance()
создает одноэлементный экземпляр класса, а затем вызывает метод init()
для регистрации различных действий и ловушек фильтра.
Наконец, мы сделаем вызов метода get_instance()
чтобы заставить класс PHP работать.
Login_Counter ::get_instance() ;
Вуаля! Мы закончили кодирование нашего плагина счетчика логинов.
Заворачивать
Чтобы лучше понять, как был построен плагин и внедрить его на вашем WordPress-сайте, загрузите его с GitHub .
Я надеюсь, что это поможет вам узнать, как разрабатывать плагины для WordPress.
Дайте нам знать ваши мысли в комментариях.