edit_user_profileのフィルタフックでwp_editorを使ってユーザープロファイルページにtinymceの入力項目を追加
profile_updateで送信された値を受け取ってupdate_user_meta
php
1//入力項目をプロフィール画面に追加
2//自分のプロフィール・他人のプロフィールの両方で走るようにフックを分岐する
3add_action(($GLOBALS['pagenow']==='profile.php'?'show':'edit').'_user_profile',function($user){
4 //user_metaは$userオブジェクトのプロパティとして取得できるようになっている
5 //user_metaにはhtmlがエスケープされて入っているのでデコードしてからwp_editorに渡す
6 wp_editor(html_entity_decode($user->profile_html??''),'profile_html');
7});
8//プロフィール更新時にuser_metaを更新
9add_action('profile_update',function($user_id){
10 //複数回profile_updateが走ることがあるので2回目以降は処理をスキップする
11 if(did_action('profile_update')>1){return;}
12 //profile_htmlが送られてきていたらuser_metaを更新
13 if(isset($_POST['profile_html'])){
14 update_user_meta($user_id,'profile_html',$_POST['profile_html']);
15 }
16});
とりあえず動くものレベルではこんな感じ
あとはnonceつけてCSRF対策とか
scriptタグstyleタグon〜属性style属性を除去してXSS対策とか
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/08 10:00
2020/12/08 11:42
2020/12/08 12:35
2020/12/08 14:25
2020/12/10 14:14