Статьи

Создание плагина счетчика входа в WordPress

WordPress, пожалуй, самая популярная система управления контентом в сети.

По данным Forbes, более 60 миллионов сайтов по всему миру работают на нем. Подобные цифры показывают, что WordPress, без сомнения, является ведущим конкурентом, когда речь заходит о системах управления контентом (CMS).

Главной достопримечательностью WordPress является его большой пул плагинов. Хотите построить магазин электронной коммерции? Есть WooCommerce . Как насчет портала работы? Есть WP Job Manager .

В этом уроке мы узнаем, как создать плагин, который будет подсчитывать, сколько раз пользователи заходят на сайт под управлением WordPress, а статистика входа отображается в пользовательском столбце на странице списка пользователей.

User listing with login count

Разработка плагинов

Большинство файлов в плагине 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.

Дайте нам знать ваши мысли в комментариях.