回答編集履歴
2
コメント加筆
test
CHANGED
@@ -8,19 +8,29 @@
|
|
8
8
|
|
9
9
|
```php
|
10
10
|
|
11
|
+
//入力項目をプロフィール画面に追加
|
11
12
|
|
13
|
+
//自分のプロフィール・他人のプロフィールの両方で走るようにフックを分岐する
|
12
14
|
|
13
15
|
add_action(($GLOBALS['pagenow']==='profile.php'?'show':'edit').'_user_profile',function($user){
|
16
|
+
|
17
|
+
//user_metaは$userオブジェクトのプロパティとして取得できるようになっている
|
18
|
+
|
19
|
+
//user_metaにはhtmlがエスケープされて入っているのでデコードしてからwp_editorに渡す
|
14
20
|
|
15
21
|
wp_editor(html_entity_decode($user->profile_html??''),'profile_html');
|
16
22
|
|
17
23
|
});
|
18
24
|
|
19
|
-
|
25
|
+
//プロフィール更新時にuser_metaを更新
|
20
26
|
|
21
27
|
add_action('profile_update',function($user_id){
|
22
28
|
|
29
|
+
//複数回profile_updateが走ることがあるので2回目以降は処理をスキップする
|
30
|
+
|
23
31
|
if(did_action('profile_update')>1){return;}
|
32
|
+
|
33
|
+
//profile_htmlが送られてきていたらuser_metaを更新
|
24
34
|
|
25
35
|
if(isset($_POST['profile_html'])){
|
26
36
|
|
1
追記
test
CHANGED
@@ -1,3 +1,43 @@
|
|
1
1
|
[edit_user_profile](https://developer.wordpress.org/reference/hooks/edit_user_profile/)のフィルタフックで[wp_editor](https://wpdocs.osdn.jp/関数リファレンス/wp_editor)を使ってユーザープロファイルページにtinymceの入力項目を追加
|
2
2
|
|
3
3
|
[profile_update](https://developer.wordpress.org/reference/hooks/profile_update/)で送信された値を受け取って[update_user_meta](https://wpdocs.osdn.jp/関数リファレンス/update_user_meta)
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
```php
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
add_action(($GLOBALS['pagenow']==='profile.php'?'show':'edit').'_user_profile',function($user){
|
14
|
+
|
15
|
+
wp_editor(html_entity_decode($user->profile_html??''),'profile_html');
|
16
|
+
|
17
|
+
});
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
add_action('profile_update',function($user_id){
|
22
|
+
|
23
|
+
if(did_action('profile_update')>1){return;}
|
24
|
+
|
25
|
+
if(isset($_POST['profile_html'])){
|
26
|
+
|
27
|
+
update_user_meta($user_id,'profile_html',$_POST['profile_html']);
|
28
|
+
|
29
|
+
}
|
30
|
+
|
31
|
+
});
|
32
|
+
|
33
|
+
```
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
とりあえず動くものレベルではこんな感じ
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
あとはnonceつけてCSRF対策とか
|
42
|
+
|
43
|
+
scriptタグstyleタグon〜属性style属性を除去してXSS対策とか
|