วิธีแบนผู้ใช้ WordPress

ฉันถูกถามเมื่อไม่กี่วันที่ผ่านมาเพื่อสร้างระบบจะห้ามผู้ใช้ WordPress จากการติดตั้ง ดังนั้นฉันจึงสร้างปลั๊กอินง่าย ๆ และฉันต้องการแบ่งปันพื้นฐานของปลั๊กอินนี้ให้กับคุณ ในบทช่วยสอนนี้เราจะกล่าวถึงตัวกรอง WordPress การกระทำการจัดการคอลัมน์ผู้ใช้และสิ่งที่ยอดเยี่ยมเพิ่มเติม.


ขั้นตอนที่ 1: สร้างปลั๊กอิน

อีกครั้งที่นี่มีความซับซ้อนสิ่งที่คุณต้องทำคือการสร้างโฟลเดอร์ใหม่ด้วย“ wp-content / plugins” ที่เรียกว่า“ แบนผู้ใช้” ในโฟลเดอร์นี้สร้างไฟล์ใหม่ที่ชื่อว่า“ ban-users.php” เปิดมันวางรหัสนี้:

ขั้นตอนที่ 2: เพิ่มช่องทำเครื่องหมายในหน้าโปรไฟล์ของผู้ใช้

สิ่งแรกที่เราต้องทำคือการเพิ่มช่องทำเครื่องหมายในแต่ละหน้าโปรไฟล์ผู้ใช้ เมื่อคุณทำเครื่องหมายที่ช่องนี้จะเก็บตัวเลือกเมตาของผู้ใช้ซึ่งจะระบุว่าผู้ใช้ไม่ได้รับอนุญาตให้ลงชื่อเข้าใช้เว็บไซต์ของคุณอีกต่อไป.

นี่คือรหัส:

/ **
* ผู้ดูแลระบบ init
* * * *
* @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 () {
if (! current_user_can ('edit_users')) {
กลับ;
}

$ user_id ทั่วโลก

// ผู้ใช้ไม่สามารถปิดการใช้งานได้
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
กลับ;
}

// ตรวจสอบว่าเปิดใช้งานหรือไม่
$ checked = checked (get_user_option ('rc_banned', $ user_id, false));

// แสดงช่องทำเครื่องหมาย
echo '
แบนผู้ใช้
'; }

ตอนนี้เราจำเป็นต้องมีฟังก์ชั่นที่จะบันทึกลงในฐานข้อมูลค่าของช่องทำเครื่องหมาย:

/ **
* บันทึกช่องทำเครื่องหมายที่กำหนดเอง
* * * *
* @access สาธารณะ
* @since 1.0
* @return ถือเป็นโมฆะ
* /
ฟังก์ชั่น rc_edit_user_profile_update () {

if (! current_user_can ('edit_users')) {
กลับ;
}

$ user_id ทั่วโลก

// ผู้ใช้ไม่สามารถปิดการใช้งานได้
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
กลับ;
}

// ล็อค
if (isset ($ _POST ['rc_ban']) && $ _POST ['rc_ban'] = 'บน') {
rc_ban_user ($ user_id);
} else {// Unlock
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', false, false);
}
}

ขั้นตอนที่ 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, false);
}

โดยทั่วไปฟังก์ชั่นนี้จะคืนค่าของตัวเลือกที่บันทึกใน 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 (ผู้ใช้ $)) {
ส่งคืนผู้ใช้ $;
}

// ข้อผิดพลาดการส่งคืนหากบัญชีผู้ใช้ถูกแบน
$ 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.

หากคุณชอบบทช่วยสอนนี้คุณจะชอบปลั๊กอินรุ่นพรีเมี่ยมนี้: Users Access Manager.

ดาวน์โหลด Full Code On 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