質問編集履歴

10

わかりやすくまとめました

2019/09/26 13:24

投稿

ringorin
ringorin

スコア40

test CHANGED
File without changes
test CHANGED
@@ -12,9 +12,9 @@
12
12
 
13
13
  こちら【save_1】ですが、
14
14
 
15
- ~~入力値は`[["age"=>20,"name"=>"smith"]]`なのに~~
15
+ ~~入力値は`[["age"=>20,"name"=>"smith"]]`なのに~~(←タイプミスでした)
16
-
16
+
17
- 入力値は`[{"age":20,"name":"smith"}]`なのに
17
+ 入力値は`[{"age":20,"name":"smith"}]`なのに
18
18
 
19
19
  なぜか保存値が変化してしまい、下図のように意味不明な`"H"`なる値が保存されます。
20
20
 
@@ -34,9 +34,9 @@
34
34
 
35
35
  foreach( $cf_key_arr as $cf_key ){
36
36
 
37
- $striped_decoded = json_decode( stripslashes( $_POST[$cf_key] ) );
37
+ $post_striped_decoded = json_decode( stripslashes( $_POST[$cf_key] ) );
38
-
38
+
39
- update_user_meta( $user_id, $cf_key, $striped_decoded );
39
+ update_user_meta( $user_id, $cf_key, $post_striped_decoded );
40
40
 
41
41
  }
42
42
 
@@ -52,17 +52,19 @@
52
52
 
53
53
  ▼【save_1の保存値】
54
54
 
55
+ `"H"`
56
+
55
57
  ![イメージ説明](0daf9f2da913043b18bc0892cffabe03.png)
56
58
 
57
59
 
58
60
 
59
61
  ###試したこと
60
62
 
61
- 保存したい値は`[["age"=>20,"name"=>"smith"]]`という配列なので、【save_1】のときみたいに入力せず、コードに直に書いてみました。こちらの【save_2】です。
63
+ 保存したい値は`[["age"=>20,"name"=>"smith"]]`という配列なので、【save_1】のときみたいに入力せず、コードに直に`$test_arr`と書いてみました。こちらの【save_2】です。
62
-
63
-
64
-
64
+
65
+
66
+
65
- すると下図のとおり無事保存されました。これと同じ値を`$_POST`を用いて保存したいというのが目的です。
67
+ すると下図のとおり無事保存されました。これと同じ値を`$_POST`を用いて保存したいというのが目的です。
66
68
 
67
69
 
68
70
 
@@ -78,9 +80,9 @@
78
80
 
79
81
  foreach( $cf_key_arr as $cf_key ){
80
82
 
81
- $arr = [["age"=>20,"name"=>"smith"]];
83
+ $test_arr = [["age"=>20,"name"=>"smith"]];
82
-
84
+
83
- update_user_meta( $user_id, $cf_key, $arr );
85
+ update_user_meta( $user_id, $cf_key, $test_arr );
84
86
 
85
87
  }
86
88
 
@@ -92,6 +94,8 @@
92
94
 
93
95
  ▼【save_2の保存値】
94
96
 
97
+ `[{"age":20,"name":"smith"}]`
98
+
95
99
  ![イメージ説明](ba12e9c6f079f0fa7660b0369bd8712b.png)
96
100
 
97
101
 
@@ -104,7 +108,25 @@
104
108
 
105
109
  そこで次の【save_log】ように`error_log`をかけてみたところ、なんと、同じ送信値だったのです。
106
110
 
111
+
112
+
113
+ コメントアウトしてあるように、
114
+
115
+ ➄の`$post_striped_decoded`をエンコードした`$post_striped_decoded_encoded`と
116
+
117
+ ➅の`$test_arr`をエンコードした`$tset_arr_encoded`が
118
+
119
+ 同じ値だと確認できます。
120
+
121
+
122
+
123
+ よって、それぞれエンコードする前の
124
+
107
- コメントアウトしてあります`error_log の出力結果`がそれです。
125
+ 【save_1】の`$post_striped_decoded`
126
+
127
+ 【save_2】の`$test_arr`が
128
+
129
+ 同じ送信値だということです。
108
130
 
109
131
 
110
132
 
@@ -124,29 +146,89 @@
124
146
 
125
147
 
126
148
 
149
+ // ➀送信値をエンコードしてログに出す
150
+
151
+ $post_init_encoded = json_encode( $_POST[$cf_key] );
152
+
153
+ error_log( '$post_init_encoded :' . $post_init_encoded );
154
+
155
+
156
+
157
+ // ➁送信値からスラッシュを削除してログに出す
158
+
159
+ $post_striped = stripslashes( $_POST[$cf_key] );
160
+
161
+ error_log( '$post_striped :' . $post_striped );
162
+
163
+
164
+
165
+ // ➂送信地からスラッシュを削除したものを、エンコードしてログに出す
166
+
167
+ $post_striped_encoded = json_encode( stripslashes( $_POST[$cf_key] ) );
168
+
169
+ error_log( '$post_striped_encoded :' . $post_striped_encoded );
170
+
171
+
172
+
173
+ // ➃送信値からスラッシュを削除したものを、デコードしてログに出す
174
+
175
+ $post_striped_decoded = json_decode( stripslashes( $_POST[$cf_key] ) );
176
+
177
+ error_log( '$post_striped_decoded :' . $post_striped_decoded ); // 779行目
178
+
179
+
180
+
181
+ // ➄送信値からスラッシュを削除してデコードしたものを、エンコードしてログに出す
182
+
183
+ $post_striped_decoded_encoded = json_encode( $post_striped_decoded );
184
+
185
+ error_log( '$post_striped_decoded_encoded :' . $post_striped_decoded_encoded );
186
+
187
+
188
+
189
+ // ➅普通の配列を、エンコードしてログに出す
190
+
127
- $arr = [["age"=>20,"name"=>"smith"]];
191
+ $test_arr = [["age"=>20,"name"=>"smith"]];
192
+
128
-
193
+ $tset_arr_encoded = json_encode( $test_arr );
194
+
129
- error_log( '★普通の配列($arr)を、ログに出すためにエンコード :' . json_encode( $arr ) );
195
+ error_log( '$tset_arr_encoded :' . $tset_arr_encoded );
130
-
131
-
132
-
133
- $striped_decoded = json_decode( stripslashes( $_POST[$cf_key] ) );
196
+
134
-
135
- error_log( '★送信値をデコードして配列にしたもの($striped_decoded)を、ログに出すためにエンコード :' . json_encode( $striped_decode ) );
197
+
136
-
137
-
198
+
199
+
138
200
 
139
201
  /*
140
202
 
203
+
204
+
205
+ ■ 管理画面からの入力値
206
+
207
+ [{"age":20,"name":"smith"}]
208
+
209
+
210
+
141
- error_log出力結果
211
+ ■ 管理画面で更新をクリックしたときのerror_log出力結果
212
+
142
-
213
+ [26-Sep-2019 13:01:34] $post_init_encoded :"[{\\"age\\":20,\\"name\\":\\"smith\\"}]"
214
+
143
- ★普通の配列($arr)を、ログに出すためにエンコード :[{"age":20,"name":"smith"}]
215
+ [26-Sep-2019 13:01:34] $post_striped :[{"age":20,"name":"smith"}]
216
+
144
-
217
+ [26-Sep-2019 13:01:34] $post_striped_encoded :"[{\"age\":20,\"name\":\"smith\"}]"
218
+
219
+ [26-Sep-2019 13:01:34] PHP Notice: Array to string conversion in /wordpress/wp-content/themes/test/functions.php on line 779
220
+
221
+ [26-Sep-2019 13:01:34] $post_striped_decoded :Array
222
+
145
- ★送信値をデコードして配列にしたもの($striped_decoded)を、ログに出すためにエンコード :[{"age":20,"name":"smith"}]
223
+ [26-Sep-2019 13:01:34] $post_striped_decoded_encoded :[{"age":20,"name":"smith"}]
224
+
225
+ [26-Sep-2019 13:01:34] $tset_arr_encoded :[{"age":20,"name":"smith"}]
226
+
227
+
146
228
 
147
229
  */
148
230
 
149
-
231
+
150
232
 
151
233
  }
152
234
 
@@ -162,9 +244,9 @@
162
244
 
163
245
  つまり
164
246
 
165
- 【save_1】の`$arr`と
166
-
167
- 【save_2】の`$striped_decoded`
247
+ 【save_1】の`$post_striped_decoded`
248
+
249
+ 【save_2】の`$test_arr`が
168
250
 
169
251
  同じ送信値であるにも関わらず、
170
252
 
@@ -174,7 +256,7 @@
174
256
 
175
257
 
176
258
 
177
- どのようにすれば`$_POST`の値を用いて【save_2の保存値】と同じ値を保存することができるようになりますでしょうか?
259
+ どのようにすれば`$_POST`の値を用いて【save_2の保存値】と同じ`[{"age":20,"name":"smith"}]`という値を保存することができるようになりますでしょうか?
178
260
 
179
261
 
180
262
 

9

追加情報を削除

2019/09/26 13:24

投稿

ringorin
ringorin

スコア40

test CHANGED
File without changes
test CHANGED
@@ -181,91 +181,3 @@
181
181
  解決策に留まらず、原因や考えられる問題点など広くご意見頂戴できましたら幸いです。
182
182
 
183
183
  不足情報等ございましたら仰ってください。
184
-
185
-
186
-
187
- ###追記情報
188
-
189
- 長くなってしまい申し訳ございません。蛇足かもしれませんが、`profile_update`のフックで`$_POST`される値について`error_log`したものをリスト化してみましたので、よろしければご参考にしてください。
190
-
191
-
192
-
193
- ```php
194
-
195
- add_action( 'profile_update', 'save_test' );
196
-
197
- function save_test( $user_id ) {
198
-
199
-
200
-
201
- $cf_key_arr = ['user_meta_test'];
202
-
203
- foreach( $cf_key_arr as $cf_key ){
204
-
205
-
206
-
207
- $init_encoded = json_encode( $_POST[$cf_key], JSON_UNESCAPED_UNICODE );
208
-
209
- error_log( '$_POST[$cf_key] - $init_encoded :' . $init_encoded );
210
-
211
-
212
-
213
- $striped = stripslashes( $_POST[$cf_key] );
214
-
215
- error_log( '$_POST[$cf_key] - $striped :' . $striped );
216
-
217
-
218
-
219
- $striped_encoded = json_encode( stripslashes( $_POST[$cf_key] ) );
220
-
221
- error_log( '$_POST[$cf_key] - $striped_encoded :' . $striped_encoded );
222
-
223
-
224
-
225
- $striped_decoded = json_decode( stripslashes( $_POST[$cf_key] ) );
226
-
227
- error_log( '$_POST[$cf_key] - $striped_decoded :' . $striped_decoded );
228
-
229
-
230
-
231
-
232
-
233
- /*
234
-
235
-
236
-
237
- ■ 管理画面からの入力値
238
-
239
- [{"age":20,"name":"smith"}]
240
-
241
-
242
-
243
- ■ 更新をクリックした時のerror_log出力結果
244
-
245
- $_POST[$cf_key] - $init_encoded :"[{\\"age\\"20:,\\"name\\":\\"smith\\"}]"
246
-
247
- $_POST[$cf_key] - $striped :[{"age"20:,"name":"smith"}]
248
-
249
- $_POST[$cf_key] - $striped_encoded :"[{\"age\"20:,\"name\":\"smith\"}]"
250
-
251
- $_POST[$cf_key] - $striped_decoded :Array
252
-
253
-
254
-
255
- */
256
-
257
-
258
-
259
- }
260
-
261
- }
262
-
263
-
264
-
265
- ```
266
-
267
- ご覧のように`$striped_decoded`だけが配列になってくれたので【save_1】で使ってみまして、でも、`"H"`が保存されてしまった。という感じになります。
268
-
269
-
270
-
271
- `$striped_decoded`以外に、【save_2の保存値】と同じ値が保存できそうなものはなさそうに思えるのですが、何か見つかりますでしょうか?

8

少し訂正

2019/09/26 12:52

投稿

ringorin
ringorin

スコア40

test CHANGED
File without changes
test CHANGED
@@ -186,7 +186,7 @@
186
186
 
187
187
  ###追記情報
188
188
 
189
- 長くなってしまい申し訳ございません。蛇足かもしれませんが、`profile_update`のフックで送信される値について`error_log`したものをリスト化してみましたので、よろしければご参考にしてください。
189
+ 長くなってしまい申し訳ございません。蛇足かもしれませんが、`profile_update`のフックで`$_POST`される値について`error_log`したものをリスト化してみましたので、よろしければご参考にしてください。
190
190
 
191
191
 
192
192
 
@@ -265,3 +265,7 @@
265
265
  ```
266
266
 
267
267
  ご覧のように`$striped_decoded`だけが配列になってくれたので【save_1】で使ってみまして、でも、`"H"`が保存されてしまった。という感じになります。
268
+
269
+
270
+
271
+ `$striped_decoded`以外に、【save_2の保存値】と同じ値が保存できそうなものはなさそうに思えるのですが、何か見つかりますでしょうか?

7

少し訂正しました

2019/09/26 03:58

投稿

ringorin
ringorin

スコア40

test CHANGED
File without changes
test CHANGED
@@ -62,7 +62,7 @@
62
62
 
63
63
 
64
64
 
65
- すると下図のとおり無事保存されました。
65
+ すると下図のとおり無事保存されました。これと同じ値を、`$_POST`を用いて保存したいというのが目的です。
66
66
 
67
67
 
68
68
 
@@ -174,7 +174,7 @@
174
174
 
175
175
 
176
176
 
177
- どのようにすれば`$_POST`の値を用いて配列を保存することができるようになりますでしょうか?
177
+ どのようにすれば`$_POST`の値を用いて【save_2の保存値】と同じ値を保存することができるようになりますでしょうか?
178
178
 
179
179
 
180
180
 

6

不要そうな部分を削除しました

2019/09/26 03:56

投稿

ringorin
ringorin

スコア40

test CHANGED
File without changes
test CHANGED
@@ -228,35 +228,19 @@
228
228
 
229
229
 
230
230
 
231
- $deep = array_map( 'stripslashes_deep', $_POST );
231
+
232
-
233
- $deep_striped_encoded = json_encode( stripslashes( $deep[$cf_key] ) );
234
-
235
- error_log( '$_POST[$cf_key] - $deep_striped_encoded :' . $deep_striped_encoded );
236
-
237
-
238
-
239
- // update_user_meta( $user_id, $cf_key, null );
240
-
241
-
242
-
243
-
244
232
 
245
233
  /*
246
234
 
247
235
 
248
236
 
249
- ■ テスト結果 ■
250
-
251
-
252
-
253
- ----- 入力値
237
+ 管理画面からの入力値
254
238
 
255
239
  [{"age":20,"name":"smith"}]
256
240
 
257
241
 
258
242
 
259
- ----- error_log
243
+ 更新をクリックした時のerror_log出力結果
260
244
 
261
245
  $_POST[$cf_key] - $init_encoded :"[{\\"age\\"20:,\\"name\\":\\"smith\\"}]"
262
246
 
@@ -266,24 +250,6 @@
266
250
 
267
251
  $_POST[$cf_key] - $striped_decoded :Array
268
252
 
269
- $_POST[$cf_key] - $deep_striped_encoded :"[{\"age\"20:,\"name\":\"smith\"}]"
270
-
271
-
272
-
273
- ------ 保存コードと結果 ( $striped の場合 )
274
-
275
- update_user_meta( $user_id, $cf_key, $striped );
276
-
277
- "[{\"age\"20:,\"name\":\"smith\"}]"
278
-
279
-
280
-
281
- ------ 保存コードと結果 ( $deep_striped_encoded の場合 )
282
-
283
- update_user_meta( $user_id, $cf_key, $deep_striped_encoded );
284
-
285
- "H"
286
-
287
253
 
288
254
 
289
255
  */
@@ -298,4 +264,4 @@
298
264
 
299
265
  ```
300
266
 
301
- ご覧のようにバックスラッシュが入ってしまうばかりの中で、`$striped_decoded`だけが配列になってくれたので【save_1】で使ってみまして、でも、`"H"`が保存されてしまった。という感じになります。
267
+ ご覧のように`$striped_decoded`だけが配列になってくれたので【save_1】で使ってみまして、でも、`"H"`が保存されてしまった。という感じになります。

5

誤字を訂正

2019/09/26 03:50

投稿

ringorin
ringorin

スコア40

test CHANGED
File without changes
test CHANGED
@@ -262,15 +262,15 @@
262
262
 
263
263
  $_POST[$cf_key] - $striped :[{"age"20:,"name":"smith"}]
264
264
 
265
- $_POST[$cf_key] - $striped_encoded :"[{\"age\"20:,\"name\":\"\u592a\u90ce\"}]"
265
+ $_POST[$cf_key] - $striped_encoded :"[{\"age\"20:,\"name\":\"smith\"}]"
266
266
 
267
267
  $_POST[$cf_key] - $striped_decoded :Array
268
268
 
269
- $_POST[$cf_key] - $deep_striped_encoded :"[{\"age\"20:,\"name\":\"\u592a\u90ce\"}]"
269
+ $_POST[$cf_key] - $deep_striped_encoded :"[{\"age\"20:,\"name\":\"smith\"}]"
270
-
271
-
272
-
270
+
271
+
272
+
273
- ------ 保存コードと結果 ($stripedの場合)
273
+ ------ 保存コードと結果 ( $striped の場合
274
274
 
275
275
  update_user_meta( $user_id, $cf_key, $striped );
276
276
 
@@ -278,9 +278,9 @@
278
278
 
279
279
 
280
280
 
281
- ------ 保存コードと結果 ($striped_decodeの場合)
281
+ ------ 保存コードと結果 ( $deep_striped_encoded の場合
282
-
282
+
283
- update_user_meta( $user_id, $cf_key, $striped_decoded );
283
+ update_user_meta( $user_id, $cf_key, $deep_striped_encoded );
284
284
 
285
285
  "H"
286
286
 

4

誤字を訂正しました

2019/09/26 03:37

投稿

ringorin
ringorin

スコア40

test CHANGED
File without changes
test CHANGED
@@ -204,9 +204,9 @@
204
204
 
205
205
 
206
206
 
207
- $init_encode = json_encode( $_POST[$cf_key], JSON_UNESCAPED_UNICODE );
207
+ $init_encoded = json_encode( $_POST[$cf_key], JSON_UNESCAPED_UNICODE );
208
-
208
+
209
- error_log( '$_POST[$cf_key] - $init_encode :' . $init_encode );
209
+ error_log( '$_POST[$cf_key] - $init_encoded :' . $init_encoded );
210
210
 
211
211
 
212
212
 
@@ -258,7 +258,7 @@
258
258
 
259
259
  ----- error_log
260
260
 
261
- $_POST[$cf_key] - $init_encode :"[{\\"age\\"20:,\\"name\\":\\"smith\\"}]"
261
+ $_POST[$cf_key] - $init_encoded :"[{\\"age\\"20:,\\"name\\":\\"smith\\"}]"
262
262
 
263
263
  $_POST[$cf_key] - $striped :[{"age"20:,"name":"smith"}]
264
264
 
@@ -280,7 +280,7 @@
280
280
 
281
281
  ------ 保存コードと結果 ($striped_decodeの場合)
282
282
 
283
- update_user_meta( $user_id, $cf_key, $striped_decode );
283
+ update_user_meta( $user_id, $cf_key, $striped_decoded );
284
284
 
285
285
  "H"
286
286
 

3

追加コードの誤字訂正

2019/09/26 03:25

投稿

ringorin
ringorin

スコア40

test CHANGED
File without changes
test CHANGED
@@ -216,23 +216,23 @@
216
216
 
217
217
 
218
218
 
219
- $striped_encode = json_encode( stripslashes( $_POST[$cf_key] ) );
219
+ $striped_encoded = json_encode( stripslashes( $_POST[$cf_key] ) );
220
-
220
+
221
- error_log( '$_POST[$cf_key] - $striped_encode :' . $striped_encode );
221
+ error_log( '$_POST[$cf_key] - $striped_encoded :' . $striped_encoded );
222
-
223
-
224
-
222
+
223
+
224
+
225
- $striped_decode = json_decode( stripslashes( $_POST[$cf_key] ) );
225
+ $striped_decoded = json_decode( stripslashes( $_POST[$cf_key] ) );
226
-
226
+
227
- error_log( '$_POST[$cf_key] - $striped_decode :' . $striped_decode );
227
+ error_log( '$_POST[$cf_key] - $striped_decoded :' . $striped_decoded );
228
228
 
229
229
 
230
230
 
231
231
  $deep = array_map( 'stripslashes_deep', $_POST );
232
232
 
233
- $deep_striped_encode = json_encode( stripslashes( $deep[$cf_key] ) );
233
+ $deep_striped_encoded = json_encode( stripslashes( $deep[$cf_key] ) );
234
-
234
+
235
- error_log( '$_POST[$cf_key] - $deep_striped_encode :' . $deep_striped_encode );
235
+ error_log( '$_POST[$cf_key] - $deep_striped_encoded :' . $deep_striped_encoded );
236
236
 
237
237
 
238
238
 
@@ -262,11 +262,11 @@
262
262
 
263
263
  $_POST[$cf_key] - $striped :[{"age"20:,"name":"smith"}]
264
264
 
265
- $_POST[$cf_key] - $striped_encode :"[{\"age\"20:,\"name\":\"\u592a\u90ce\"}]"
265
+ $_POST[$cf_key] - $striped_encoded :"[{\"age\"20:,\"name\":\"\u592a\u90ce\"}]"
266
-
266
+
267
- $_POST[$cf_key] - $striped_decode :Array
267
+ $_POST[$cf_key] - $striped_decoded :Array
268
-
268
+
269
- $_POST[$cf_key] - $deep_striped_encode :"[{\"age\"20:,\"name\":\"\u592a\u90ce\"}]"
269
+ $_POST[$cf_key] - $deep_striped_encoded :"[{\"age\"20:,\"name\":\"\u592a\u90ce\"}]"
270
270
 
271
271
 
272
272
 
@@ -298,4 +298,4 @@
298
298
 
299
299
  ```
300
300
 
301
- ご覧のようにバックスラッシュが入ってしまうばかりの中で、`$striped_decode`だけが配列になってくれたので【save_1】で使ってみまして、でも、`"H"`が保存されてしまった。という感じになります。
301
+ ご覧のようにバックスラッシュが入ってしまうばかりの中で、`$striped_decoded`だけが配列になってくれたので【save_1】で使ってみまして、でも、`"H"`が保存されてしまった。という感じになります。

2

誤字の訂正と情報の追記

2019/09/26 03:23

投稿

ringorin
ringorin

スコア40

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,13 @@
10
10
 
11
11
  ###発生している問題
12
12
 
13
+ こちら【save_1】ですが、
14
+
13
- こちら【save_1】ですが、入力値は`[["age"=>20,"name"=>"smith"]]`なのに、なぜか保存値が変化してしまい、下図のように意味不明な`"H"`なる値が保存されます。
15
+ ~~入力値は`[["age"=>20,"name"=>"smith"]]`なのに、~~
16
+
17
+ 入力値は`[{"age":20,"name":"smith"}]`なのに、
18
+
19
+ なぜか保存値が変化してしまい、下図のように意味不明な`"H"`なる値が保存されます。
14
20
 
15
21
 
16
22
 
@@ -175,3 +181,121 @@
175
181
  解決策に留まらず、原因や考えられる問題点など広くご意見頂戴できましたら幸いです。
176
182
 
177
183
  不足情報等ございましたら仰ってください。
184
+
185
+
186
+
187
+ ###追記情報
188
+
189
+ 長くなってしまい申し訳ございません。蛇足かもしれませんが、`profile_update`のフックで送信される値について`error_log`したものをリスト化してみましたので、よろしければご参考にしてください。
190
+
191
+
192
+
193
+ ```php
194
+
195
+ add_action( 'profile_update', 'save_test' );
196
+
197
+ function save_test( $user_id ) {
198
+
199
+
200
+
201
+ $cf_key_arr = ['user_meta_test'];
202
+
203
+ foreach( $cf_key_arr as $cf_key ){
204
+
205
+
206
+
207
+ $init_encode = json_encode( $_POST[$cf_key], JSON_UNESCAPED_UNICODE );
208
+
209
+ error_log( '$_POST[$cf_key] - $init_encode :' . $init_encode );
210
+
211
+
212
+
213
+ $striped = stripslashes( $_POST[$cf_key] );
214
+
215
+ error_log( '$_POST[$cf_key] - $striped :' . $striped );
216
+
217
+
218
+
219
+ $striped_encode = json_encode( stripslashes( $_POST[$cf_key] ) );
220
+
221
+ error_log( '$_POST[$cf_key] - $striped_encode :' . $striped_encode );
222
+
223
+
224
+
225
+ $striped_decode = json_decode( stripslashes( $_POST[$cf_key] ) );
226
+
227
+ error_log( '$_POST[$cf_key] - $striped_decode :' . $striped_decode );
228
+
229
+
230
+
231
+ $deep = array_map( 'stripslashes_deep', $_POST );
232
+
233
+ $deep_striped_encode = json_encode( stripslashes( $deep[$cf_key] ) );
234
+
235
+ error_log( '$_POST[$cf_key] - $deep_striped_encode :' . $deep_striped_encode );
236
+
237
+
238
+
239
+ // update_user_meta( $user_id, $cf_key, null );
240
+
241
+
242
+
243
+
244
+
245
+ /*
246
+
247
+
248
+
249
+ ■ テスト結果 ■
250
+
251
+
252
+
253
+ ----- 入力値
254
+
255
+ [{"age":20,"name":"smith"}]
256
+
257
+
258
+
259
+ ----- error_log
260
+
261
+ $_POST[$cf_key] - $init_encode :"[{\\"age\\"20:,\\"name\\":\\"smith\\"}]"
262
+
263
+ $_POST[$cf_key] - $striped :[{"age"20:,"name":"smith"}]
264
+
265
+ $_POST[$cf_key] - $striped_encode :"[{\"age\"20:,\"name\":\"\u592a\u90ce\"}]"
266
+
267
+ $_POST[$cf_key] - $striped_decode :Array
268
+
269
+ $_POST[$cf_key] - $deep_striped_encode :"[{\"age\"20:,\"name\":\"\u592a\u90ce\"}]"
270
+
271
+
272
+
273
+ ------ 保存コードと結果 ($stripedの場合)
274
+
275
+ update_user_meta( $user_id, $cf_key, $striped );
276
+
277
+ "[{\"age\"20:,\"name\":\"smith\"}]"
278
+
279
+
280
+
281
+ ------ 保存コードと結果 ($striped_decodeの場合)
282
+
283
+ update_user_meta( $user_id, $cf_key, $striped_decode );
284
+
285
+ "H"
286
+
287
+
288
+
289
+ */
290
+
291
+
292
+
293
+ }
294
+
295
+ }
296
+
297
+
298
+
299
+ ```
300
+
301
+ ご覧のようにバックスラッシュが入ってしまうばかりの中で、`$striped_decode`だけが配列になってくれたので【save_1】で使ってみまして、でも、`"H"`が保存されてしまった。という感じになります。

1

save_1とsave_2が逆だったので訂正しました

2019/09/26 03:20

投稿

ringorin
ringorin

スコア40

test CHANGED
File without changes
test CHANGED
@@ -20,9 +20,9 @@
20
20
 
21
21
  ```php
22
22
 
23
- add_action( 'profile_update', 'save_2' );
23
+ add_action( 'profile_update', 'save_1' );
24
24
 
25
- function save_2( $user_id ) {
25
+ function save_1( $user_id ) {
26
26
 
27
27
  $cf_key_arr = ['user_meta_test'];
28
28
 
@@ -64,9 +64,9 @@
64
64
 
65
65
  ```php
66
66
 
67
- add_action( 'profile_update', 'save_1' );
67
+ add_action( 'profile_update', 'save_2' );
68
68
 
69
- function save_1( $user_id ) {
69
+ function save_2( $user_id ) {
70
70
 
71
71
  $cf_key_arr = ['user_meta_test'];
72
72