質問編集履歴

8

ファイル名誤記再修正

2019/06/07 08:14

投稿

kinrinkaryu
kinrinkaryu

スコア40

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

ファイル名誤記を修正

2019/06/07 08:14

投稿

kinrinkaryu
kinrinkaryu

スコア40

test CHANGED
File without changes
test CHANGED
@@ -144,7 +144,7 @@
144
144
 
145
145
  ---
146
146
 
147
- rest-pai-int.phpからの抜き出し、
147
+ rest-api-int.phpからの抜き出し、
148
148
 
149
149
  ```PHP
150
150
 

6

重複部分を修正

2019/06/07 08:12

投稿

kinrinkaryu
kinrinkaryu

スコア40

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
- rest-pai-int.phpからの抜き出し、ほとんど理解できていないが、おそらく肝心なところ↓
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を追加

2019/06/07 08:11

投稿

kinrinkaryu
kinrinkaryu

スコア40

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の一部を追記

2019/06/07 08:10

投稿

kinrinkaryu
kinrinkaryu

スコア40

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の中身を追記

2019/06/07 06:07

投稿

kinrinkaryu
kinrinkaryu

スコア40

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

補足を更新

2019/06/07 05:30

投稿

kinrinkaryu
kinrinkaryu

スコア40

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

補足情報追加

2019/06/07 02:58

投稿

kinrinkaryu
kinrinkaryu

スコア40

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
+ ```