MENU

confirm_delete_users()

confirm_delete_users() は、削除対象のユーザー(のID群)を受け取り、管理画面上で削除するユーザー情報と、各ユーザーに紐づくコンテンツの処理(再割当など)を確認するフォームを出力します。

引数に渡されたユーザー配列が正しくない場合は処理を中断し、正しい場合は削除前の最終確認メッセージを表示します。これにより、誤って重要なユーザー情報を削除してしまわないよう、管理者に十分な注意を促す役割を果たします

目次

基本構文

基本的な呼び出し方は以下の通りです。

<?php
   $users_to_delete = array( 12, 34, 56 );
   // 削除対象ユーザーのID配列
   confirm_delete_users( $users_to_delete );
?>

渡された $users パラメータが配列かつ空でないかをチェックし、不正な場合は false を返します。

正常な場合は、削除対象ユーザーの情報(ユーザー名など)の一覧と、各ユーザーに対するコンテンツの取り扱い方法を選択するためのフォームを出力します。

このフォームは、削除アクションを実行するための隠しフィールドや nonce フィールドを含み、管理者に最終確認を促します。

引き数と戻り値

引き数説明
$usersarray, 必須削除対象のユーザーIDの配列が指定されます。内部では、$_POST['allusers'] が利用されるケースもあるため、外部から渡す $users パラメータが正しくない場合は false を返します。
戻り値説明
truebool正常に確認画面を出力できた場合
falseboolユーザー配列が不正な場合

この関数は、ユーザーの確認画面を HTML 出力(echo)するため、明示的な戻り値としては bool を返します。

使用例

シンプルな使用例

<?php
   $users_to_delete = array( 45, 78 );
   if ( confirm_delete_users( $users_to_delete ) ) {
      // 確認画面の出力後は、削除実行の前段階になるため、
      // 管理者は表示されたフォームから実際の削除操作を実行する
   }
?>

上記コードでは、ユーザーID 45 と 78 が削除対象として渡され、関数内で各ユーザーの名前、各種注意文、さらには関連するコンテンツの再割当選択用のフォームが生成されます。これにより、管理画面上で安全に削除操作前の最終確認が行えます。

1人のユーザー削除の場合

<?php
   $users_to_delete = array( 32 ); // 単一ユーザーの場合
   confirm_delete_users( $users_to_delete );
?>

この例では、1名のユーザー削除時に「ユーザーを全ネットワーク・サイトから削除する」旨の確認メッセージが表示されます。ユーザーが1人の場合と複数の場合で、表示するメッセージが多少異なり、分かりやすい確認が行えるようになっています。

注意点

入力チェック

関数は、引数 $users が配列で空でないかをチェックします。適切なデータが渡されない場合は、何も出力せず false を返すため、呼び出し側でのバリデーションが必須です。

内部処理の依存

内部では $_POST['allusers'] を参照して削除対象ユーザーが処理される場面があるため、フォームのデータが上書きされないように注意が必要です。

管理者権限の確認

各ユーザーの削除権限についてもチェックが行われています。たとえば、ネットワーク管理者は削除できないようにしており、その場合はエラーメッセージを表示して処理を中断します。

良く一緒に使われる関数

get_userdata()

$delete_user = get_userdata( $user_id );

渡されたユーザーIDから、ユーザーの詳細情報(ユーザー名、IDなど)を取得し、確認画面に表示する情報として利用されます。

current_user_can()

if ( ! current_user_can( 'delete_user', $delete_user->ID ) ) {
   wp_die( sprintf( __( 'Warning! User %s cannot be deleted.' ), $delete_user->user_login ) );
}

現在の管理者が、対象ユーザー削除権限を持っているかを確認します。権限不足の場合に削除処理を中断します。

wp_nonce_field()

wp_nonce_field( 'ms-users-delete' );

フォーム送信時のセキュリティチェック用の nonce フィールドを出力し、不正なリクエストからシステムを保護する役割を果たします。

想定されるトラブル

$users パラメータが正しく渡されない

配列以外のデータ型が渡されたり、空の配列が渡された場合は、関数は確認画面を出力せずに false を返します。

解決方法

呼び出し前に、対象となるユーザーID群が正しく配列として準備されているか、また対象ユーザーが存在するか等、十分なバリデーションを実施してください。

ネットワーク管理者のユーザーが含まれている場合

管理者権限のあるユーザー(ネットワーク管理者)に対して削除処理を実行しようとすると、関数内で wp_die() が実行され、処理が中断される可能性があります。

解決方法

削除対象から管理者ユーザーを除外するか、事前に管理者権限の確認を行い、削除対象リストから排除する仕組みを実装してください。

Q&A

confirm_delete_users() はどのタイミングで呼び出されますか?

マルチサイトのユーザー削除操作の確認画面を生成する際、管理者が「削除」ボタンを押した後の確認フェーズで呼び出されます。

関数の引数 $users はどのような形式で渡す必要がありますか?

ユーザーIDの整数値を要素とする配列形式で渡す必要があります。不正な形式の場合、確認画面は表示されず false を返します。

ネットワーク管理者の削除はどのように扱われますか?

削除対象にネットワーク管理者が含まれている場合、関数内でエラーメッセージが表示され、処理が中断されます。これにより、誤って管理者ユーザーが削除されることを防ぎます。

まとめ


confirm_delete_users() は、WordPress マルチサイト環境におけるユーザー削除前の最終確認を行う重要な関数です。

管理者が削除対象ユーザーとその関連コンテンツの処理方法を確認できるフォームを生成することで、誤操作を防止し、システムの安全性を高めます。

ユーザー情報の取得、権限チェック、セキュリティのための nonce フィールド生成など、関連する補助関数と連携することで、堅牢なユーザー管理が実現されます。今後、削除対象データのバリデーションや管理者権限の厳格なチェック等、細かな改善を行うことで、更なる安全性向上が可能です。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次