Створення плагіна WordPress Лічильник авторизації користувачів

12

Від автора: WordPress – можливо, найпопулярніша система управління контентом в інтернеті. За даними журналу Forbes під управлінням даної CMS знаходиться понад 60 мільйонів веб-сайтів, що, безсумнівно, ставить систему в ранг лідера. WordPress заманює величезною кількістю плагінів. Хочете створити інтернет-магазин? Є плагін WooCommerce. Хочете створити портал, присвячений роботі? Ось вам WP Job Manager.

У цьому уроці ми навчимося створювати плагін WordPress «Лічильник авторизації користувачів», який підраховує кількість входів у свій обліковий запис на сайті під управлінням WordPress, значення буде відображатися в додатковій колонці на сторінці списку користувачів.

Створення плагіна WordPress Лічильник авторизації користувачів

Розробка плагіна

Більшість файлів у плагіні WordPress складають файли PHP, і зберігаються вони в /wp-content/plugins/. Заздалегідь говорю, що ви повинні вміти підключатися до сервера через FTP/SFTP/SCP або SSH. Створіть файл плагіна wordpress-login-count.php. В кінці уроку ми отримаємо готовий плагін. Спершу, необхідно додати шапку плагіна, без неї WordPress не зрозуміє, що це плагін.

Потім необхідно задати 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 );
}

WordPress запускає хук wp_login, коли користувач авторизувався, тобто ним можна скористатися для підрахунку кількість авторизацій. Функція count_user_login() виробляє підрахунок:

/**
* Save user login count to Database.
*
* @param string $username user_login
* @param object $user object WP_User
*/
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 класу.

Login_Counter::get_instance();

От і все! Ми закінчили кодити наш плагін лічильник.

Висновок

Щоб більш детально розібратися в процесі створення плагіна і його роботі сайту під управлінням WordPress, скачайте проект з GitHub. Сподіваюся, цей урок буде вам корисний при створенні плагінів для WordPress. Пишіть, що думаєте в коментарях.