質問編集履歴
8
ファイル名誤記再修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -144,7 +144,7 @@
|
|
144
144
|
|
145
145
|
---
|
146
146
|
|
147
|
-
rest-api-int.phpからの抜き出し、
|
147
|
+
rest-api-init.phpからの抜き出し、
|
148
148
|
|
149
149
|
```PHP
|
150
150
|
|
7
ファイル名誤記を修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -144,7 +144,7 @@
|
|
144
144
|
|
145
145
|
---
|
146
146
|
|
147
|
-
rest-p
|
147
|
+
rest-api-int.phpからの抜き出し、
|
148
148
|
|
149
149
|
```PHP
|
150
150
|
|
6
重複部分を修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -144,74 +144,70 @@
|
|
144
144
|
|
145
145
|
---
|
146
146
|
|
147
|
+
rest-pai-int.phpからの抜き出し、
|
148
|
+
|
149
|
+
```PHP
|
150
|
+
|
151
|
+
public function add_rest_field($posts, $fields) {
|
152
|
+
|
153
|
+
global $posts_fields;
|
154
|
+
|
155
|
+
foreach ($posts as $post) {
|
156
|
+
|
157
|
+
foreach ($fields as $field) $posts_fields[$post][] = $field;
|
158
|
+
|
159
|
+
register_rest_field(
|
160
|
+
|
161
|
+
$post,
|
162
|
+
|
163
|
+
'post_meta',
|
164
|
+
|
165
|
+
[
|
166
|
+
|
167
|
+
'get_callback' => function($object, $field_name, $request) use ($post) {
|
168
|
+
|
169
|
+
global $posts_fields;
|
170
|
+
|
171
|
+
$meta = [];
|
172
|
+
|
173
|
+
foreach($posts_fields[$post] as $field) {
|
174
|
+
|
175
|
+
$meta[$field] = get_post_meta($object['id'], $field, true);
|
176
|
+
|
177
|
+
}
|
178
|
+
|
179
|
+
return $meta;
|
180
|
+
|
181
|
+
},
|
182
|
+
|
183
|
+
'update_callback' => function($value, $object, $field_name) use ($post) {
|
184
|
+
|
185
|
+
global $posts_fields;
|
186
|
+
|
187
|
+
foreach($posts_fields[$post] as $field) {
|
188
|
+
|
189
|
+
if (!$this->validate($field, $value[$field])) break;
|
190
|
+
|
191
|
+
update_post_meta($object->ID, $field, $this->set($field, $value[$field]));
|
192
|
+
|
193
|
+
}
|
194
|
+
|
195
|
+
},
|
196
|
+
|
197
|
+
'schema' => null
|
198
|
+
|
199
|
+
]
|
200
|
+
|
201
|
+
);
|
202
|
+
|
203
|
+
}
|
204
|
+
|
205
|
+
}
|
206
|
+
|
207
|
+
```
|
208
|
+
|
147
|
-
|
209
|
+
ほとんど理解できていないが、おそらく肝心なところ↓
|
148
210
|
|
149
211
|
`$meta[$field] = get_post_meta($object['id'], $field, true);`
|
150
212
|
|
151
213
|
`update_post_meta($object->ID, $field, $this->set($field, $value[$field]));`
|
152
|
-
|
153
|
-
```PHP
|
154
|
-
|
155
|
-
public function add_rest_field($posts, $fields) {
|
156
|
-
|
157
|
-
global $posts_fields;
|
158
|
-
|
159
|
-
foreach ($posts as $post) {
|
160
|
-
|
161
|
-
foreach ($fields as $field) $posts_fields[$post][] = $field;
|
162
|
-
|
163
|
-
register_rest_field(
|
164
|
-
|
165
|
-
$post,
|
166
|
-
|
167
|
-
'post_meta',
|
168
|
-
|
169
|
-
[
|
170
|
-
|
171
|
-
'get_callback' => function($object, $field_name, $request) use ($post) {
|
172
|
-
|
173
|
-
global $posts_fields;
|
174
|
-
|
175
|
-
$meta = [];
|
176
|
-
|
177
|
-
foreach($posts_fields[$post] as $field) {
|
178
|
-
|
179
|
-
$meta[$field] = get_post_meta($object['id'], $field, true);
|
180
|
-
|
181
|
-
}
|
182
|
-
|
183
|
-
return $meta;
|
184
|
-
|
185
|
-
},
|
186
|
-
|
187
|
-
'update_callback' => function($value, $object, $field_name) use ($post) {
|
188
|
-
|
189
|
-
global $posts_fields;
|
190
|
-
|
191
|
-
foreach($posts_fields[$post] as $field) {
|
192
|
-
|
193
|
-
if (!$this->validate($field, $value[$field])) break;
|
194
|
-
|
195
|
-
update_post_meta($object->ID, $field, $this->set($field, $value[$field]));
|
196
|
-
|
197
|
-
}
|
198
|
-
|
199
|
-
},
|
200
|
-
|
201
|
-
'schema' => null
|
202
|
-
|
203
|
-
]
|
204
|
-
|
205
|
-
);
|
206
|
-
|
207
|
-
}
|
208
|
-
|
209
|
-
}
|
210
|
-
|
211
|
-
```
|
212
|
-
|
213
|
-
ほとんど理解できていないが、おそらく肝心なところ↓
|
214
|
-
|
215
|
-
`$meta[$field] = get_post_meta($object['id'], $field, true);`
|
216
|
-
|
217
|
-
`update_post_meta($object->ID, $field, $this->set($field, $value[$field]));`
|
5
補足2を追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -139,3 +139,79 @@
|
|
139
139
|
// });
|
140
140
|
|
141
141
|
```
|
142
|
+
|
143
|
+
補足2:「WP自体」の記事&フィールドの投稿・更新動作
|
144
|
+
|
145
|
+
---
|
146
|
+
|
147
|
+
rest-pai-int.phpからの抜き出し、ほとんど理解できていないが、おそらく肝心なところ↓
|
148
|
+
|
149
|
+
`$meta[$field] = get_post_meta($object['id'], $field, true);`
|
150
|
+
|
151
|
+
`update_post_meta($object->ID, $field, $this->set($field, $value[$field]));`
|
152
|
+
|
153
|
+
```PHP
|
154
|
+
|
155
|
+
public function add_rest_field($posts, $fields) {
|
156
|
+
|
157
|
+
global $posts_fields;
|
158
|
+
|
159
|
+
foreach ($posts as $post) {
|
160
|
+
|
161
|
+
foreach ($fields as $field) $posts_fields[$post][] = $field;
|
162
|
+
|
163
|
+
register_rest_field(
|
164
|
+
|
165
|
+
$post,
|
166
|
+
|
167
|
+
'post_meta',
|
168
|
+
|
169
|
+
[
|
170
|
+
|
171
|
+
'get_callback' => function($object, $field_name, $request) use ($post) {
|
172
|
+
|
173
|
+
global $posts_fields;
|
174
|
+
|
175
|
+
$meta = [];
|
176
|
+
|
177
|
+
foreach($posts_fields[$post] as $field) {
|
178
|
+
|
179
|
+
$meta[$field] = get_post_meta($object['id'], $field, true);
|
180
|
+
|
181
|
+
}
|
182
|
+
|
183
|
+
return $meta;
|
184
|
+
|
185
|
+
},
|
186
|
+
|
187
|
+
'update_callback' => function($value, $object, $field_name) use ($post) {
|
188
|
+
|
189
|
+
global $posts_fields;
|
190
|
+
|
191
|
+
foreach($posts_fields[$post] as $field) {
|
192
|
+
|
193
|
+
if (!$this->validate($field, $value[$field])) break;
|
194
|
+
|
195
|
+
update_post_meta($object->ID, $field, $this->set($field, $value[$field]));
|
196
|
+
|
197
|
+
}
|
198
|
+
|
199
|
+
},
|
200
|
+
|
201
|
+
'schema' => null
|
202
|
+
|
203
|
+
]
|
204
|
+
|
205
|
+
);
|
206
|
+
|
207
|
+
}
|
208
|
+
|
209
|
+
}
|
210
|
+
|
211
|
+
```
|
212
|
+
|
213
|
+
ほとんど理解できていないが、おそらく肝心なところ↓
|
214
|
+
|
215
|
+
`$meta[$field] = get_post_meta($object['id'], $field, true);`
|
216
|
+
|
217
|
+
`update_post_meta($object->ID, $field, $this->set($field, $value[$field]));`
|
4
functiond.phpの一部を追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -79,3 +79,63 @@
|
|
79
79
|
etcs a:0:{}
|
80
80
|
|
81
81
|
data a:10:{i:0;a:1:{s:6:"住所";s:9:"福岡市";}i:1;a:1:{s:6:"交通";s:9:地下鉄"";...}`
|
82
|
+
|
83
|
+
再追記:functions.phpの一部(コメントアウト状態なので無視していたが、念のために。)
|
84
|
+
|
85
|
+
```PHP
|
86
|
+
|
87
|
+
// add_action('rest_api_init', function () {
|
88
|
+
|
89
|
+
// register_rest_field(
|
90
|
+
|
91
|
+
// 'page',
|
92
|
+
|
93
|
+
// 'post_meta',
|
94
|
+
|
95
|
+
// array(
|
96
|
+
|
97
|
+
// 'get_callback' => function($object, $field_name, $request) {
|
98
|
+
|
99
|
+
// $meta_fields = array(
|
100
|
+
|
101
|
+
// 'wpcf-js',
|
102
|
+
|
103
|
+
// 'wpcf-css',
|
104
|
+
|
105
|
+
// );
|
106
|
+
|
107
|
+
// $meta = array();
|
108
|
+
|
109
|
+
// foreach ($meta_fields as $field) {
|
110
|
+
|
111
|
+
// $meta[$field] = get_post_meta($object[ 'id' ], $field, true);
|
112
|
+
|
113
|
+
// }
|
114
|
+
|
115
|
+
// return $meta;
|
116
|
+
|
117
|
+
// },
|
118
|
+
|
119
|
+
// 'update_callback' => function($value, $object, $field_name) {
|
120
|
+
|
121
|
+
// $js = $value['wpcf-js'];
|
122
|
+
|
123
|
+
// $css = $value['wpcf-css'];
|
124
|
+
|
125
|
+
// update_post_meta($object->ID, 'wpcf-js', $js);
|
126
|
+
|
127
|
+
// update_post_meta($object->ID, 'wpcf-css', $css);
|
128
|
+
|
129
|
+
// }
|
130
|
+
|
131
|
+
// ,
|
132
|
+
|
133
|
+
// 'schema' => null,
|
134
|
+
|
135
|
+
// )
|
136
|
+
|
137
|
+
// );
|
138
|
+
|
139
|
+
// });
|
140
|
+
|
141
|
+
```
|
3
DBの中身を追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -71,3 +71,11 @@
|
|
71
71
|
<?php endwhile; endif; ?>
|
72
72
|
|
73
73
|
```
|
74
|
+
|
75
|
+
追記:wp_postmetaデーブルの一部
|
76
|
+
|
77
|
+
`_wpcf-etcs-sort-order a:1:{i:0;i:6233;}
|
78
|
+
|
79
|
+
etcs a:0:{}
|
80
|
+
|
81
|
+
data a:10:{i:0;a:1:{s:6:"住所";s:9:"福岡市";}i:1;a:1:{s:6:"交通";s:9:地下鉄"";...}`
|
2
補足を更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
```PHP
|
32
32
|
|
33
|
-
<!--前提:カスタムフィールドに入力された値は配列としてで格納されている、入力ルールや処理方法は不明。-->
|
33
|
+
<!--前提:(引き継ぐ以前に)カスタムフィールドに入力された値は配列としてで格納されている、入力ルールや処理方法は不明。-->
|
34
34
|
|
35
35
|
<?php if (have_posts()) : ?> <?php while(have_posts()) : the_post(); ?>
|
36
36
|
|
1
補足情報追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -19,3 +19,55 @@
|
|
19
19
|
|
20
20
|
|
21
21
|
どのようなフォーマットで入力すれば、正常に配列出力されますか?
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
補足:関連すると思われるソースコード
|
26
|
+
|
27
|
+
---
|
28
|
+
|
29
|
+
ワードプレス本来の/themes/name/single.phpにあたるファイル
|
30
|
+
|
31
|
+
```PHP
|
32
|
+
|
33
|
+
<!--前提:カスタムフィールドに入力された値は配列としてで格納されている、入力ルールや処理方法は不明。-->
|
34
|
+
|
35
|
+
<?php if (have_posts()) : ?> <?php while(have_posts()) : the_post(); ?>
|
36
|
+
|
37
|
+
<?php
|
38
|
+
|
39
|
+
$title = get_the_title();
|
40
|
+
|
41
|
+
$title = $title === '' ? 'タイトルなし' : $title;
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
$data = get_post_meta(get_the_ID(), 'data', true);//単一フィールド配列
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
$sold_out = get_post_meta(get_the_ID(), 'sold_out', true);
|
50
|
+
|
51
|
+
$content = get_the_content();
|
52
|
+
|
53
|
+
?>
|
54
|
+
|
55
|
+
<h1><?php echo $title; ?><?php if ($sold_out === '1') echo '(ご成約)'; ?></h1>
|
56
|
+
|
57
|
+
<div<?php if ($sold_out === '1') echo ' class="sold-out"'; ?>>
|
58
|
+
|
59
|
+
<!--出力ここから-->
|
60
|
+
|
61
|
+
<table class="">
|
62
|
+
|
63
|
+
<?php foreach($data as $datum): ?><tr><?php foreach($datum as $key => $value): ?><th><?php echo $key; ?></th><td><?php echo $value; ?></td><?php endforeach; ?></tr><?php endforeach; ?>
|
64
|
+
|
65
|
+
</table>
|
66
|
+
|
67
|
+
<!--出力ここまで-->
|
68
|
+
|
69
|
+
<!--中略-->
|
70
|
+
|
71
|
+
<?php endwhile; endif; ?>
|
72
|
+
|
73
|
+
```
|