confirm_delete_users()
は、削除対象のユーザー(のID群)を受け取り、管理画面上で削除するユーザー情報と、各ユーザーに紐づくコンテンツの処理(再割当など)を確認するフォームを出力します。
引数に渡されたユーザー配列が正しくない場合は処理を中断し、正しい場合は削除前の最終確認メッセージを表示します。これにより、誤って重要なユーザー情報を削除してしまわないよう、管理者に十分な注意を促す役割を果たします
基本構文
基本的な呼び出し方は以下の通りです。
<?php
$users_to_delete = array( 12, 34, 56 );
// 削除対象ユーザーのID配列
confirm_delete_users( $users_to_delete );
?>
渡された $users
パラメータが配列かつ空でないかをチェックし、不正な場合は false
を返します。
正常な場合は、削除対象ユーザーの情報(ユーザー名など)の一覧と、各ユーザーに対するコンテンツの取り扱い方法を選択するためのフォームを出力します。
このフォームは、削除アクションを実行するための隠しフィールドや nonce フィールドを含み、管理者に最終確認を促します。
引き数と戻り値
引き数 | 型 | 説明 |
---|---|---|
$users | array , 必須 | 削除対象のユーザーIDの配列が指定されます。内部では、$_POST['allusers'] が利用されるケースもあるため、外部から渡す $users パラメータが正しくない場合は false を返します。 |
戻り値 | 型 | 説明 |
---|---|---|
true | bool | 正常に確認画面を出力できた場合 |
false | bool | ユーザー配列が不正な場合 |
この関数は、ユーザーの確認画面を 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()
は、WordPress マルチサイト環境におけるユーザー削除前の最終確認を行う重要な関数です。
管理者が削除対象ユーザーとその関連コンテンツの処理方法を確認できるフォームを生成することで、誤操作を防止し、システムの安全性を高めます。
ユーザー情報の取得、権限チェック、セキュリティのための nonce フィールド生成など、関連する補助関数と連携することで、堅牢なユーザー管理が実現されます。今後、削除対象データのバリデーションや管理者権限の厳格なチェック等、細かな改善を行うことで、更なる安全性向上が可能です。
コメント