Преди няколко дни ме помолиха да създам система, която да забрани на WordPress потребител да инсталира. Така че създадох прост плъгин и исках да споделя с вас основите на тази приставка. В този урок ще обхващаме WordPress филтри, действия, управление на колоните на потребителите и още няколко страхотни неща.
Contents
- 1 Стъпка 1: Създайте приставката
- 2 Стъпка 2: Добавете отметка в потребителската страница на потребителския профил
- 3 Стъпка 3: Забраняване на потребителите
- 4 Стъпка 4: Премахване на забраната на потребителите
- 5 Стъпка 5: Забранен е потребителят?
- 6 Стъпка 5: Избягвайте забранените потребители да влизат
- 7 заключение
Стъпка 1: Създайте приставката
Още веднъж, тук е много сложно, всичко, което трябва да направите, е да създадете нова папка с „wp-content / plugins“, наречена „ban-users“. В тази папка създайте нов файл, наречен „ban-users.php“, отворете го и поставете този код:
Стъпка 2: Добавете отметка в потребителската страница на потребителския профил
Първото нещо, което трябва да направим, е да добавим отметка на всяка страница на изданието на потребителския профил. Когато поставите отметка в това квадратче, тя ще съхранява мета опция на потребителя, която ще показва, че на потребителя вече не е разрешено да влиза в уебсайта си.
Ето кода:
/ **
* Администриране init
*
* @ достъп публично
* @since 1.0
* @return void
* /
функция rc_admin_init () {
// Редактиране на потребителски профил
добавяне ('edit_user_profile', 'rc_edit_user_profile');
добавяне ('edit_user_profile_update', 'rc_edit_user_profile_update');
}
добавяне ('admin_init', 'rc_admin_init');
Този код е просто създаване на повикване към функция, която трябва да създадем сега. Тази функция ще добави отметка към страницата на потребителския профил.
/ **
* Добавя персонализирано квадратче към страницата на потребителското издание
*
* @ достъп публично
* @since 1.0
* @return void
* /
функция rc_edit_user_profile () {
ако (! current_user_can ('edit_users')) {
се върне;
}
глобален $ user_id;
// Потребителят не може да се деактивира
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
ако ($ current_user_id == $ user_id) {
се върне;
}
// Проверете дали е активирана
$ check = проверен (get_user_option ('rc_banned', $ user_id, false));
// Показване на отметка
ехо '
Забрани потребител
";
}
Сега трябва да имаме функцията, която ще запише в базата данни стойността на квадратчето за отметка:
/ **
* Запазване на потребителски квадрат
*
* @ достъп публично
* @since 1.0
* @return void
* /
функция rc_edit_user_profile_update () {
ако (! current_user_can ('edit_users')) {
се върне;
}
глобален $ user_id;
// Потребителят не може да се деактивира
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
ако ($ current_user_id == $ user_id) {
се върне;
}
// Ключалка
if (isset ($ _POST ['rc_ban']) && $ _POST ['rc_ban'] = 'on') {
rc_ban_user ($ user_id);
} else {// Отключване
rc_unban_user ($ user_id);
}
}
Както можете да видите, тази нова функция използва две други функции: rc_ban_users () и rc_unban_users (). Имената им са доста изрични, първият ще съхранява в базата данни факта, че потребителят е забранен, вторият ще отключи потребителите.
Стъпка 3: Забраняване на потребителите
Време е да създадете функцията rc_ban_users (). В тази функция трябва да проверим дали дадена стойност вече е запазена, а ако не, трябва да съхраняваме стойността. Това е причината да извикам функция, която ще опиша по-късно: rc_is_user_banned ():
/ **
* Забрани потребител
*
* @ достъп публично
* @since 1.0
* @return void
* /
функция rc_ban_user ($ user_id) {
$ old_status = rc_is_user_banned ($ user_id);
// Актуализиране на състоянието
ако (! $ old_status) {
update_user_option ($ user_id, 'rc_banned', true, false);
}
}
Стъпка 4: Премахване на забраната на потребителите
Следващата функция е обратната като тази, която току-що създадохме: трябва да дадем възможност на „премахване на забрана“ на потребителите:
/ **
* Премахване на забрана на потребителя
*
* @ достъп публично
* @since 1.0
* @return void
* /
функция rc_unban_user ($ user_id) {
$ old_status = rc_is_user_banned ($ user_id);
// Актуализиране на състоянието
ако ($ old_status) {
update_user_option ($ user_id, 'rc_banned', false, false);
}
}
Стъпка 5: Забранен е потребителят?
В rc_ban_users () и rc_unban_users () видяхме, че използваме функция, наречена rc_is_user_banned (), за да проверим дали потребителят е забранен или не. Нека го създадем:
/ **
* Проверява дали потребителят вече е забранен
*
* @ достъп публично
* @since 1.0
* @return void
* /
функция rc_is_user_banned ($ user_id) {
връщане get_user_option ('rc_banned', $ user_id, false);
}
По принцип тази функция просто връща стойността на опцията, запазена в rc_ban_users ().
Понастоящем имаме нова отметка на страницата на потребителското издание, която трябва да харесва това:
Последната стъпка е да закачите функция към формата за вход, за да избегнете забранените потребители да влизат.
Стъпка 5: Избягвайте забранените потребители да влизат
За целта трябва да използваме филтър по подразбиране на WordPress, наречен „wp_authenticate_user“. Към този филтър ще закачим функция, наречена „rc_authenticate_user ()“. Тази функция ще използва WP_Error клас.
/ **
* Проверете дали потребителят е заключен по време на процеса на влизане
*
* @ достъп публично
* @since 1.0
* @return void
* /
функция rc_authenticate_user ($ потребител) {
ако (is_wp_error ($ потребител)) {
върнете $ потребител;
}
// Грешка при връщане, ако потребителският акаунт е забранен
$ banned = get_user_option ('rc_banned', $ user-> ID, false);
ако ($ забранено) {
върнете нов WP_Error ('rc_banned', __ ('ГРЕШКА: Този потребителски акаунт е деактивиран. ',' Rc '));
}
върнете $ потребител;
}
Сега просто трябва да добавим филтъра:
add_filter ('wp_authenticate_user', 'rc_authenticate_user', 1);
заключение
Създадохме приставка, която добавя отметка към страницата за издание на потребителския профил. Използвахме втора функция, за да съхраним стойността в квадратчето и създаваме функция за забрана на потребител на WordPress и друга на за отключване на потребител. Създадохме и малка функция, за да проверим дали потребителят е забранен или не. И най-накрая закачихме функция към филтъра „wp_authenticate_user“, използвайки стандартния клас WP_Error WordPress.
Ако сте харесали този урок, ще харесате премиум версията на този плъгин: Мениджър на достъпа на потребителите.
Изтеглете пълния код на Github