レッスン予約プラグインについてのメモです。
ユーザーの分類は「管理者」と「講師」と「会員」の3種類で、管理者は会員の管理を、講師はスケジュール設定を、会員は予約・キャンセルを行います。権限グループによって「講師=投稿者(author)」「会員=購読者(subscriber)」というように分けましたが、講師には何かわかりやすい属性を付けたいと思いました。
ユーザー編集ページに項目を追加する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
/** * ユーザー編集ページに項目追加(管理者用) */ add_action('edit_user_profile', 'addMetaTeacher'); function addMetaTeacher(){ $user_id = $_GET['user_id']; $user_query = new WP_User_Query(array('include' => array($user_id))); $user = $user_query->results[0]; // 権限グループ「投稿者」の場合 if(in_array('author', $user->roles)){ $checked = ''; if(get_user_meta($user->ID, 'teacher', true) == 'teacher'){ $checked = 'checked="checked"'; } $format = <<<EOD <h3>講師属性</h3> <table class="form-table"> <tr> <th><label for="teacher">講師</label></th> <td><input type="checkbox" name="teacher" id="teacher" value="teacher" %s/></td> </tr> </table> EOD; printf($format, $checked); } } |
追加した項目をユーザー情報更新時に保存する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/** * ユーザー情報追加項目の保存 */ add_action('profile_update', 'updateMetaTeacher'); function updateMetaTeacher(){ $user_id = $_POST['user_id']; // 講師 if (!empty($_POST['teacher'])){ update_user_meta($user_id, 'teacher', $_POST['teacher']); } else { delete_user_meta($user_id, 'teacher', ''); } } |
ユーザーを削除したらユーザーメタ情報も削除する
1 2 3 4 5 6 7 |
/** * ユーザー情報追加項目の削除 */ add_action('delete_user', 'deleteMetaTeacher'); function deleteMetaTeacher($user_id){ delete_user_meta($user_id, 'teacher'); } |
スクリーンショット
ユーザー編集ページに項目を追加します。
コメントを残す