質問編集履歴

5

質問を訂正

2019/09/25 15:30

投稿

ringorin
ringorin

スコア40

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ###実現したいこと
8
8
 
9
- 下記問題にあるように、fuctions.phpから配列を保存するときにだけ文字列になってしまいますが、これを配列のままで保存したいです。
9
+ 下記問題にあるように、fuctions.phpから配列を保存しようとすると、配列が文字列になってしまいますが、これを配列のままで保存したいです。
10
10
 
11
11
 
12
12
 
@@ -20,13 +20,13 @@
20
20
 
21
21
 
22
22
 
23
- |保存場所|送信値|保存値|
23
+ |保存場所|保存値|
24
-
24
+
25
- |:--:|:--:|:--:|
25
+ |:--:|:--:|
26
-
26
+
27
- |header.phpでの更新|配列|配列|
27
+ |header.phpでの保存|配列|
28
-
28
+
29
- |fuctions.phpでの更新|配列|文字列 |
29
+ |fuctions.phpでの保存|文字列|
30
30
 
31
31
 
32
32
 
@@ -90,11 +90,11 @@
90
90
 
91
91
  ###試したこと
92
92
 
93
- 上のheader.phpとfunctions.phpについて、それぞれ`error_log()`を出して送信値を確認してみました。結果がこちらです。
93
+ 上のheader.phpとfunctions.phpについて、それぞれ`error_log()`を出して送信値を確認してみました。
94
-
95
-
96
-
94
+
95
+
96
+
97
- まずheader.phpの送信値`$test1``error_log()`結果です。
97
+ まずheader.phpの送信値`$test1`について、`error_log()`した結果です。
98
98
 
99
99
  これはサイト読み込み時に出力されます。
100
100
 
@@ -106,7 +106,7 @@
106
106
 
107
107
  ```
108
108
 
109
- 続いてfunctions.phpの`$_POST[$ucf_key]``error_log()`結果です。
109
+ 続いてfunctions.phpの送信値`$_POST[$ucf_key]`について、`error_log()`した結果です。
110
110
 
111
111
  これは管理画面で「プロフィールを更新」をクリックしたときに出力されます。
112
112
 
@@ -120,15 +120,11 @@
120
120
 
121
121
  ```
122
122
 
123
- このように、送信の時点ではいずれも配が送信されていることが確認きます。
123
+ このように、functions.phpの方では送信の時点で文字になっしまうようとう仕様のようです。
124
-
125
-
126
-
127
- 違いと言えばfunctions.phpの方はやたらとスラッシュがついていること(シリアライズされていること?)ですが、しかしその結果としてなぜ、保存される値が文字列になってしまうのでしょうか??
124
+
128
-
129
-
130
-
125
+
126
+
131
- どのように解決されるのかご教授頂けましたら幸いです。
127
+ どのようにばこれを配列で保存できるのかご教授頂けましたら幸いです。
132
128
 
133
129
 
134
130
 
@@ -138,7 +134,7 @@
138
134
 
139
135
 
140
136
 
141
- まずheader.php読み込み時の管理画面の表示が【あ】で、その後管理画面で「プロフィールを更新」をクリックして表示されるのが【い】となっており、【い】が文字列になっていることが確認できました。
137
+ まずheader.php読み込み時の管理画面の表示が【あ】で、その後管理画面で「プロフィールを更新」をクリックして表示されるのが【い】となっており、【い】が文字列になっていることが確認できました。
142
138
 
143
139
 
144
140
 

4

一部訂正

2019/09/25 15:29

投稿

ringorin
ringorin

スコア40

test CHANGED
File without changes
test CHANGED
@@ -94,7 +94,9 @@
94
94
 
95
95
 
96
96
 
97
- まずheader.phpの`$test1`の`error_log()`結果です。
97
+ まずheader.phpの送信値`$test1`の`error_log()`結果です。
98
+
99
+ これはサイト読み込み時に出力されます。
98
100
 
99
101
  `error_log( '$test1 :' . json_encode( $test1, JSON_UNESCAPED_UNICODE ) );`
100
102
 
@@ -106,6 +108,8 @@
106
108
 
107
109
  続いてfunctions.phpの`$_POST[$ucf_key]`の`error_log()`結果です。
108
110
 
111
+ これは管理画面で「プロフィールを更新」をクリックしたときに出力されます。
112
+
109
113
  `error_log( '$_POST[$ucf_key] :' . json_encode( $_POST[$ucf_key], JSON_UNESCAPED_UNICODE ) );`
110
114
 
111
115
  ```
@@ -152,6 +156,10 @@
152
156
 
153
157
  尚、【あ】【い】の表示コードは次のとおりです。
154
158
 
159
+
160
+
161
+ (`$cf_data_arr`をループしているために、値が配列である【あ】ではピンク色のテーブルが表示されていますが、文字列になってしまった【い】ではループができずエラーが表示されています。)
162
+
155
163
  ```php
156
164
 
157
165
  add_action( 'show_user_profile', 'prof_fields_test1', 10, 1 );

3

画像訂正

2019/09/25 14:09

投稿

ringorin
ringorin

スコア40

test CHANGED
File without changes
test CHANGED
@@ -140,7 +140,7 @@
140
140
 
141
141
  【あ】
142
142
 
143
- ![イメージ説明](9554ede30a5bf60cb46453e0c26ac82a.png)
143
+ ![イメージ説明](3d5360a8cf9959d695eda43859c37785.png)
144
144
 
145
145
 
146
146
 

2

補足しました

2019/09/25 13:54

投稿

ringorin
ringorin

スコア40

test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,9 @@
14
14
 
15
15
 
16
16
 
17
+ これはそもそものWordpress仕様なのでしょうか。
18
+
17
- `update_user_meta()` で配列を保存する際の挙動ですが、保存場所によって保存値に下記の違いが生じてしまい、統一した保存ができず苦戦してい
19
+ `update_user_meta()` で配列を保存する際の挙動ですが、保存場所によって保存値に下記の違いが生じてしまい、統一した保存ができません
18
20
 
19
21
 
20
22
 
@@ -60,7 +62,7 @@
60
62
 
61
63
  続いてこちらがfunctions.phpに書かれている、管理画面から保存する処理です。
62
64
 
63
- ```
65
+ ```php
64
66
 
65
67
  add_action( 'profile_update', 'save_prof_fields_test1' );
66
68
 
@@ -102,7 +104,7 @@
102
104
 
103
105
  ```
104
106
 
105
- 続いてfunctions.phpの`$_POST[$ucf_key]`の`errorlog()`結果です。
107
+ 続いてfunctions.phpの`$_POST[$ucf_key]`の`error_log()`結果です。
106
108
 
107
109
  `error_log( '$_POST[$ucf_key] :' . json_encode( $_POST[$ucf_key], JSON_UNESCAPED_UNICODE ) );`
108
110
 
@@ -118,8 +120,92 @@
118
120
 
119
121
 
120
122
 
121
- 違いと言えばfunctions.phpの方はシリアライズされていることですが、しかしその結果としてなぜ、保存される値が文字列になってしまうのでしょうか??
123
+ 違いと言えばfunctions.phpの方はやたらとスラッュがついていること(シリアライズされていること?)ですが、しかしその結果としてなぜ、保存される値が文字列になってしまうのでしょうか??
122
124
 
123
125
 
124
126
 
125
127
  どのように解決されるものかご教授頂けましたら幸いです。
128
+
129
+
130
+
131
+ ###補足
132
+
133
+ ちなみにfunctioins.phpでの保存の場合にだけ文字列として保存される。ということの確認は次のとおりです。
134
+
135
+
136
+
137
+ まずheader.php読み込み時の管理画面の表示が【あ】で、その後管理画面で「プロフィールを更新」をクリックして表示されるのが【い】となっており、【い】が文字列になっていることが確認できるました。
138
+
139
+
140
+
141
+ 【あ】
142
+
143
+ ![イメージ説明](9554ede30a5bf60cb46453e0c26ac82a.png)
144
+
145
+
146
+
147
+ 【い】
148
+
149
+ ![イメージ説明](6287cb23440607819a7d8bec67946a72.png)
150
+
151
+
152
+
153
+ 尚、【あ】【い】の表示コードは次のとおりです。
154
+
155
+ ```php
156
+
157
+ add_action( 'show_user_profile', 'prof_fields_test1', 10, 1 );
158
+
159
+ add_action( 'edit_user_profile', 'prof_fields_test1', 10, 1 );
160
+
161
+ function prof_fields_test1( $user ) {
162
+
163
+ $u_id = $user->ID;
164
+
165
+ $ucf_key_arr = ['user_meta_test_1'];
166
+
167
+ echo '<h3>テスト情報</h3>';
168
+
169
+ foreach( $ucf_key_arr as $ucf_key ){
170
+
171
+ echo '<h4>'.$ucf_key.'</h4>';
172
+
173
+ echo '<table>';
174
+
175
+ echo '<tbody>';
176
+
177
+ echo '<tr>';
178
+
179
+ $cf_data_arr = get_user_meta( $u_id, $cf_name, true );
180
+
181
+ $i=0;
182
+
183
+ foreach( $cf_data_arr as $cf_data ){
184
+
185
+ echo '<td>';
186
+
187
+ echo '<input type="text" name="'.$cf_name.'['.$i.'][date]" value="'.$cf_data['date'].'">';
188
+
189
+ echo '<input type="text" name="'.$cf_name.'['.$i.'][id]" value="'.$cf_data['id'].'">';
190
+
191
+ echo '</td>';
192
+
193
+ $i++;
194
+
195
+ }
196
+
197
+ echo '</tr>';
198
+
199
+ echo '</tbody>';
200
+
201
+ echo '</table>';
202
+
203
+ $textarea = maybe_serialize($cf_data_arr);
204
+
205
+ echo '<textarea>'.$textarea.'</textarea>';
206
+
207
+ }
208
+
209
+ }
210
+
211
+ ```

1

コード誤字訂正

2019/09/25 13:52

投稿

ringorin
ringorin

スコア40

test CHANGED
File without changes
test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  ```php
40
40
 
41
- $cf_name = 'user_meta_test_1';
41
+ $ucf_key = 'user_meta_test_1';
42
42
 
43
43
  $test1 = [
44
44
 
@@ -54,7 +54,7 @@
54
54
 
55
55
 
56
56
 
57
- update_user_meta( HIS_ID, $cf_name, $test1 );
57
+ update_user_meta( get_current_user_id(), $ucf_key, $test1 );
58
58
 
59
59
  ```
60
60