워드 프레스 사용자를 금지하는 방법

며칠 전에 시스템을 만들라는 요청을 받으면 설치에서 WordPress 사용자를 금지시킬 것입니다. 간단한 플러그인을 만들었고이 플러그인의 기본 사항을 알려 드리고자합니다. 이 자습서에서는 워드 프레스 필터, 작업, 사용자 열 관리 및 몇 가지 더 유용한 내용을 다룹니다..


1 단계 : 플러그인 생성

다시 한 번,이 과정은 매우 복잡합니다.“ban-users”라는“wp-content / plugins”를 사용하여 새 폴더를 생성하기 만하면됩니다. 이 폴더에서“ban-users.php”라는 새 파일을 생성하고 다음 코드를 붙여 넣습니다.

2 단계 : 사용자 프로필 페이지에 확인란 추가

가장 먼저해야 할 일은 각 사용자 프로필 버전 페이지에 확인란을 추가하는 것입니다. 이 확인란을 선택하면 사용자가 더 이상 웹 사이트에 로그인 할 수 없음을 나타내는 사용자 메타 옵션이 저장됩니다.

코드는 다음과 같습니다.

/ **
* 관리자 초기화
*
* @access 공개
* @since 1.0
* @return void
* /
함수 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 void
* /
함수 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));

// 표시 확인란
에코
사용자 금지
'; }

이제 데이터베이스에 확인란의 값을 저장하는 기능이 필요합니다.

/ **
* 사용자 정의 저장 확인란
*
* @access 공개
* @since 1.0
* @return void
* /
함수 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'] = '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 () :

/ **
* 금지 사용자
*
* @access 공개
* @since 1.0
* @return void
* /
함수 rc_ban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// 업데이트 상태
if (! $ old_status) {
update_user_option ($ user_id, 'rc_banned', true, false);
}
}

4 단계 : 사용자 금지

다음 기능은 방금 만든 기능과 반대입니다. 사용자에게 "금지 해제"기능을 제공해야합니다.

/ **
* 금지 사용자
*
* @access 공개
* @since 1.0
* @return void
* /
함수 rc_unban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// 업데이트 상태
if ($ 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 void
* /
함수 rc_is_user_banned ($ user_id) {
get get_user_option ( 'rc_banned', $ user_id, false)를 리턴하십시오.
}

기본적으로이 함수는 단순히 rc_ban_users ()에 저장된 옵션의 값을 반환합니다.

현재 사용자 버전 페이지에는 다음과 같은 새로운 확인란이 있습니다.

ban_users_1

마지막 단계는 금지 된 사용자가 로그인하지 못하도록 기능을 로그인 양식에 연결하는 것입니다.

5 단계 : 금지 된 사용자 로그인 방지

이렇게하려면“wp_authenticate_user”라는 WordPress 기본 필터를 사용해야합니다. 이 필터에는“rc_authenticate_user ()”라는 함수를 연결합니다. 이 기능은 WP_Error 클래스.

/ **
* 로그인 과정에서 사용자가 잠겨 있는지 확인
*
* @access 공개
* @since 1.0
* @return void
* /
함수 rc_authenticate_user ($ user) {

if (is_wp_error ($ user)) {
$ user를 반환;
}

// 사용자 계정이 금지 된 경우 오류 반환
$ banned = get_user_option ( 'rc_banned', $ user-> ID, false);
if ($ banned) {
새로운 WP_Error ( 'rc_banned', __ ( '오류:이 사용자 계정은 비활성화되어 있습니다. ','rc '));
}

$ user를 반환;
}

이제 필터를 추가하면됩니다.

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

결론

사용자 프로필 버전 페이지에 확인란을 추가하는 플러그인을 만들었습니다. 두 번째 함수를 사용하여 확인란에 값을 저장하고 WordPress 사용자를 금지하고 다른 사용자를 잠금 해제하기위한 기능을 만듭니다. 또한 사용자 금지 여부를 확인하는 작은 기능도 만들었습니다. 그리고 마지막으로 WP_Error WordPress 기본 클래스를 사용하여 함수를 "wp_authenticate_user"필터에 연결했습니다..

이 학습서가 마음에 들면이 플러그인의 프리미엄 버전 인 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