質問編集履歴
5
質問を訂正
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`
|
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]`
|
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
|
-
|
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
一部訂正
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
画像訂正
test
CHANGED
File without changes
|
test
CHANGED
@@ -140,7 +140,7 @@
|
|
140
140
|
|
141
141
|
【あ】
|
142
142
|
|
143
|
-
![イメージ説明](
|
143
|
+
![イメージ説明](3d5360a8cf9959d695eda43859c37785.png)
|
144
144
|
|
145
145
|
|
146
146
|
|
2
補足しました
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
コード誤字訂正
test
CHANGED
File without changes
|
test
CHANGED
@@ -38,7 +38,7 @@
|
|
38
38
|
|
39
39
|
```php
|
40
40
|
|
41
|
-
$cf_
|
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(
|
57
|
+
update_user_meta( get_current_user_id(), $ucf_key, $test1 );
|
58
58
|
|
59
59
|
```
|
60
60
|
|