“Захист від дурня”: як унеможливити видалення акаунта користувача у WordPress

Коли ти власник і єдиний автор блогу – навмисне чи випадкове видалення користувача звучить скоріше як фантастика! 🙂 Такого просто не може бути! Інша річ, коли ти власник порталу чи великого блогу з багатьма користувачами – авторами, адміністраторами, та ще й із заплутаною системою прав. Одного дня нав’язлива думка про це може почати з’являтись у вигляді жаху! :blink: Тож сьогодні ми навчимось робити дуже корисну річ – блокувати можливість видалення користувача у WordPress.

Загалом код дуже простий. Я поясню його по крокам. Спершу нам потрібно викликати дію, пов”язану із процесом видалення акаунта користувача. Для цього скористаємось функцією дії add_action. Тег (хук), що відповідає за процес видалення виглядає як delete_user (його аргумент – це ID користувача).

Функція дії з’єднує тег (хук) із потрібною кастомною функцією. Найчастіше потрібна функція є кастомною, написаною програмістом для виконання спеціальних дій. А ось тег (хук) – це наперед визначені розробниками WordPress функції, кожна з яких відповідає за певну подію у функціонуванні двигунця. У WordPress Codex є погрупований список хуків.

Отож, початок нашого коду такий:

add_action( 'delete_user', 'dont_delete_user' );

Як бачимо, першим параметром функції дії add_action є назва тега (хука), другим – наша кастомна функція, яка унеможливить видалення користувацького акаунта. Власне, тепер необхідно написати її.

function dont_delete_user( $id ) {
	$dont_delete_ids = array( 1, 2, 3, 4, 5 );

	if ( in_array( $id, $dont_delete_ids ) )
		wp_die( 'Ви не можете видалити акаунт цього користувача.' );
}

Створюємо функцію dont_delete_user. Назначаємо перемінній $dont_delete_ids масив, що складається із номерів ID користувачів, які необхідно вберегти від видалення. Саме тут ми визначаємо, яких користувачів “захищати” (по номеру ID), а яких – ні. Далі застосовуємо умовну конструкцію та функцію перевірки даних у масиві, що загалом, простою мовою, звучить так: якщо номер ID користувача, акаунт якого видаляється, є у масиві номерів “захищених” від видалення, то виконання поточної WordPress функції зупиняється.

add_action( 'delete_user', 'dont_delete_user' );
function dont_delete_user( $id ) {
	$dont_delete_ids = array( 1, 2, 3, 4, 5 );

	if ( in_array( $id, $dont_delete_ids ) )
		wp_die( 'Ви не можете видалити акаунт цього користувача.' );
}

Ось так виглядає повний варіант нашого коду. Його потрібно помістити у файл functions.php.

За підтримки:
Український форум Веб-Безпеки. Дискусії щодо безпеки двигунців, розмови про мови програмування, новини кібер світу.

Агентства недвижимости Москвы. Каталог агентств недвижимости Москвы и Подмосковья. Все о покупке, продаже и обмене недвижимости.

Приклади дизайну для натхнення

Приклади дизайну для натхнення

Дизайн для корпоративного сайта

Дизайн для корпоративного сайта

Новіший допис