Когда ты владелец и единственный автор блога — умышленное или случайное удаление пользователя звучит скорее как фантастика! Такого просто не может быть!
Другое дело, когда ты владелец портала или большого блога с многими пользователями — авторами, администраторами, да еще и с запутанной системой прав. Однажды навязчивая мысль об этом может начать появляться в виде ужаса! Поэтому сегодня мы научимся делать очень полезную вещь — блокировать возможность удаления пользователя в WordPress. Сейчас мы рассмотрим как избежать удаления аккаунта пользователя в 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.