Ինչպես արգելել WordPress- ի օգտագործողը

Ինձ մի քանի օր առաջ խնդրել էին, որ համակարգը ստեղծի, որ WordPress- ի օգտագործողին տեղադրումը արգելի: Այսպիսով, ես ստեղծեցի մի պարզ plugin և ես ուզում էի ձեզ հետ կիսել այս plugin- ի հիմունքները: Այս ձեռնարկում մենք ծածկելու ենք WordPress ֆիլտրերը, գործողությունները, օգտագործողների սյունների կառավարումը և ևս մի քանի հիանալի բաներ.


Քայլ 1. Ստեղծեք Plugin- ը

Եվս մեկ անգամ, այստեղ շատ բարդ է, այն ամենը, ինչ դուք պետք է անեք, ստեղծել է «wp- պարունակություն / plugins» նոր պանակ, որը կոչվում է «արգելող օգտվողներ»: Այս թղթապանակում ստեղծեք նոր ֆայլ, որը կոչվում է «ban-users.php», այն բացեք ՝ տեղադրեք այս ծածկագիրը ՝

Քայլ 2. Օգտագործողների պրոֆիլի էջում ավելացնել տուփ

Առաջին բանը, որ մենք պետք է անենք, յուրաքանչյուր օգտվողի պրոֆիլի հրատարակության էջում վանդակն ավելացնելն է: Երբ ստուգեք այս վանդակը, այն կպահպանի օգտագործողի մետա տարբերակ, որը ցույց կտա, որ օգտագործողին այլևս թույլատրված չէ մուտք գործել ձեր վեբ կայք.

Ահա ծածկագիրը.

/ **
* Admin նախաձեռնություն
*
* @access հանրային
* @since 1.0
* @return անվավեր է
* /
գործառույթ rc_admin_init ()

// Խմբագրել օգտվողի պրոֆիլը
add_action ('edit_user_profile', 'rc_edit_user_profile');
add_action ('edit_user_profile_update', 'rc_edit_user_profile_update');

}
add_action ('admin_init', 'rc_admin_init');

Այս ծածկագիրը պարզապես զանգ է ստեղծում այն ​​գործառույթի համար, որը մենք այժմ պետք է ստեղծենք: Այս գործառույթը կավելացնի վանդակը օգտվողների պրոֆիլի էջում.

/ **
* Ավելացնում է հարմարեցված տուփը օգտվողի հրատարակության էջին
*
* @access հանրային
* @since 1.0
* @return անվավեր է
* /
գործառույթ rc_edit_user_profile ()
եթե (! aktual_user_can ('edit_users')) {
վերադարձ;
}

գլոբալ $ user_id;

// Օգտագործողը չի կարող անջատել ինքն իրեն
$ current_user = wp_get_current_user ();
$ aktual_user_id = $ current_user-> ID;
եթե ($ aktual_user_id == $ user_id) {
վերադարձ;
}

// Ստուգեք, արդյոք միացված է
$ ստուգված = ստուգված (get_user_option ('rc_banned', $ user_id, false));

// Displayուցադրման վանդակը
արձագանք
Արգելափակել օգտագործողը
'; }

Այժմ մենք պետք է ունենանք այնպիսի գործառույթ, որը տվյալների բազայում կխնայի տուփի արժեքը.

/ **
* Պահպանել սովորական տուփը
*
* @access հանրային
* @since 1.0
* @return անվավեր է
* /
գործառույթ rc_edit_user_profile_update ()

եթե (! aktual_user_can ('edit_users')) {
վերադարձ;
}

գլոբալ $ user_id;

// Օգտագործողը չի կարող անջատել ինքն իրեն
$ current_user = wp_get_current_user ();
$ aktual_user_id = $ current_user-> ID;
եթե ($ aktual_user_id == $ user_id) {
վերադարձ;
}

// կողպեք
եթե (թողարկեք ($ _POST ['rc_ban'])) && $ _POST ['rc_ban'] = 'միացված') {
rc_ban_user ($ user_id);
} other {// Բացել
rc_unban_user ($ user_id);
}

}

Ինչպես տեսնում եք, այս նոր գործառույթն օգտագործում է ևս երկու գործառույթ ՝ rc_ban_users () և rc_unban_users (): Նրանց անունները բավականին բացահայտ են, առաջինը տվյալների շտեմարանում կպահպանի այն փաստը, որ օգտագործողը արգելված է, երկրորդը ՝ օգտվողներին կբացարկի.

Քայլ 3. Արգելել օգտագործողներին

Հիմա ժամանակն է ստեղծել rc_ban_users () գործառույթը: Այս գործառույթում մենք պետք է ստուգենք, արդյոք մի արժեք արդեն պահված է, և եթե ոչ, ապա պետք է պահենք արժեքը: Դա է պատճառը, որ ես անվանում եմ մի գործառույթ, որը ես նկարագրելու եմ ավելի ուշ. Rc_is_user_banned ():

/ **
* Արգելել օգտագործողին
*
* @access հանրային
* @since 1.0
* @return անվավեր է
* /
գործառույթ rc_ban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Թարմացնել կարգավիճակը
եթե (! $ old_status)
update_user_option ($ user_id, 'rc_banned', ճշմարիտ, կեղծ);
}
}

Քայլ 4. Օգտագործողներին արգելեք

Հետևյալ գործառույթը հակառակն է, քանի որ մենք պարզապես ստեղծեցինք. Մենք պետք է հնարավորություն ունենանք «չարգելելու» օգտվողներին.

/ **
* Արգելափակել օգտագործողը
*
* @access հանրային
* @since 1.0
* @return անվավեր է
* /
գործառույթ rc_unban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Թարմացնել կարգավիճակը
եթե ($ old_status) {
update_user_option ($ user_id, 'rc_banned', կեղծ, կեղծ);
}
}

Քայլ 5. Արգելվում է օգտագործողը?

Մենք rc_ban_users- ում () և rc_unban_users () -ում տեսանք, որ մենք օգտագործում ենք մի գործառույթ, որը կոչվում է rc_is_user_banned (), ստուգելու համար օգտագործողը արգելված է, թե ոչ: Եկեք ստեղծենք այն.

/ **
* Ստուգում է, եթե օգտագործողն արդեն արգելված է
*
* @access հանրային
* @since 1.0
* @return անվավեր է
* /
գործառույթ rc_is_user_banned ($ user_id) {
վերադարձը get_user_option ('rc_banned', $ user_id, կեղծ);
}

Ըստ էության, այս գործառույթը պարզապես վերադարձնում է rc_ban_users- ում պահված տարբերակի արժեքը ().

Այս պահին օգտագործողի հրատարակության էջում մենք ունենք նոր տուփ, որը պետք է լինի այսպիսին.

ban_users_1

Վերջին քայլը գործառույթը մուտքի ձևին կապելն է, որպեսզի արգելված օգտագործողները մուտք գործեն.

Քայլ 5. Խուսափեք արգելված օգտվողներից մուտք գործելու համար

Դա անելու համար մենք պետք է օգտագործենք WordPress լռելյայն ֆիլտրը, որը կոչվում է «wp_authenticate_user»: Այս ֆիլտրին մենք կցենք գործառույթ «rc_authenticate_user ()» անունով: Այս գործառույթը կօգտագործի WP_Error դաս.

/ **
* Ստուգեք, արդյոք մուտք գործելու ընթացքում օգտագործողը արգելափակված է
*
* @access հանրային
* @since 1.0
* @return անվավեր է
* /
գործառույթ rc_authenticate_user ($ օգտվող) {

եթե (is_wp_error ($ օգտվող)) {
վերադարձնել $ օգտագործող;
}

// Վերադարձի սխալը, եթե օգտագործողի հաշիվն արգելված է
$ արգելված = get_user_option ('rc_banned', $ user-> ID, կեղծ);
եթե ($ արգելված) {
վերադարձնել նոր WP_Error ('rc_banned', __ ('ՍԵՂԱՆԱյս օգտվողի հաշիվն անջատված է: ',' rc '));
}

վերադարձնել $ օգտագործող;
}

Հիմա պարզապես անհրաժեշտ է ավելացնել ֆիլտրը.

add_filter ('wp_authenticate_user', 'rc_authenticate_user', 1);

Եզրակացություն

Մենք ստեղծեցինք մի plugin, որը վանդակը ավելացնում է օգտվողի պրոֆիլի հրատարակության էջին: Մենք օգտագործեցինք երկրորդ գործառույթ ՝ արժեքը պահատուփի վրա պահելու համար, և ստեղծում ենք գործառույթ ՝ արգելելու WordPress օգտագործողին և ևս մեկին ՝ օգտագործողին բացելու համար: Մենք նաև ստեղծեցինք փոքր գործառույթ ՝ ստուգելու համար օգտագործողին արգելված է, թե ոչ: Եվ մենք վերջապես մի գործառույթ կապեցինք «wp_authenticate_user» ֆիլտրին ՝ օգտագործելով WP_Error WordPress լռելյայն դասը.

Եթե ​​ձեզ դուր է եկել այս ձեռնարկը, ապա ձեզ դուր կգա այս plugin- ի պրեմիում տարբերակը `Users Access Manager.

Ներբեռնեք ամբողջական ծածկագիրը Github- ում

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map