数日前に、WordPressユーザーのインストールを禁止するシステムを作成するように依頼されました。簡単なプラグインを作成し、このプラグインの基本を共有したいと思いました。このチュートリアルでは、WordPressのフィルター、アクション、ユーザー列の管理など、いくつかの優れた点を取り上げます。.


ステップ1:プラグインを作成する

ここでも非常に複雑です。「ban-users」と呼ばれる「wp-content / plugins」を含む新しいフォルダを作成するだけです。このフォルダーで、「ban-users.php」という新しいファイルを作成し、それを開いて次のコードを貼り付けます。

ステップ2:ユーザーのプロフィールページにチェックボックスを追加する

まず、各ユーザープロファイルのエディションページにチェックボックスを追加する必要があります。このチェックボックスをオンにすると、ユーザーがウェブサイトへのログインを許可されなくなったことを示すユーザーメタオプションが保存されます.

これがコードです:

/ **
*管理者初期化
*
* @access public
* @ 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 public
* @ 1.0以降
* @return void
* /
function 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 public
* @ 1.0以降
* @return void
* /
function 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()の2つの関数を使用しています。彼らの名前はかなり明示的で、最初のものはユーザーが禁止されているという事実をデータベースに保存し、2番目はユーザーのロックを解除します.

ステップ3:ユーザーを禁止する

ここで、rc_ban_users()関数を作成します。この関数では、値が既に格納されているかどうかを確認する必要があり、そうでない場合は値を格納する必要があります。これが、後で説明する関数を呼び出す理由です。rc_is_user_banned():

/ **
*ユーザーを禁止する
*
* @access public
* @ 1.0以降
* @return void
* /
function 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 public
* @ 1.0以降
* @return void
* /
function 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 public
* @ 1.0以降
* @return void
* /
function rc_is_user_banned($ user_id){
return 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 public
* @ 1.0以降
* @return void
* /
function 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);

結論

ユーザープロフィールの編集ページにチェックボックスを追加するプラグインを作成しました。チェックボックスの値を格納するために2番目の関数を使用し、WordPressユーザーを禁止する関数とユーザーをロック解除する関数を作成しました。また、ユーザーが禁止されているかどうかを確認する小さな関数を作成しました。そして最後に、WP_Error WordPressデフォルトクラスを使用して、関数を「wp_authenticate_user」フィルターにフックしました。.

このチュートリアルが気に入ったら、このプラグインのプレミアムバージョンを気に入っていただけることでしょう。UsersAccess Manager.

Githubで完全なコードをダウンロード

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me