質問編集履歴

1

投稿後に試したことを追記しました。

2020/11/15 20:45

投稿

Web-Fuji
Web-Fuji

スコア29

test CHANGED
File without changes
test CHANGED
@@ -12,6 +12,8 @@
12
12
 
13
13
  とりあえず、下記のphpコードで全部の選択肢は表示させることができました。
14
14
 
15
+ (参考サイト:https://www.advancedcustomfields.com/resources/get_field_object/)
16
+
15
17
  ```PHP
16
18
 
17
19
  <table>
@@ -24,7 +26,7 @@
24
26
 
25
27
  <?php
26
28
 
27
- $field = get_field_object('sample');
29
+ $field = get_field_object('equipment01');
28
30
 
29
31
  if( $field['choices'] ): ?>
30
32
 
@@ -46,18 +48,192 @@
46
48
 
47
49
 
48
50
 
51
+ 【追記】
52
+
53
+ 他にも、下記コードでも試してみました。
54
+
55
+ **試したコード①**(参考サイト:https://ja.wordpress.org/support/topic/wordpress-%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e3%80%8cadvanced-custom-fields%e3%80%8d%e3%81%ae%e3%83%81%e3%82%a7%e3%83%83%e3%82%af%e3%83%9c%e3%82%bf%e3%83%b3%e3%82%92%e5%87%ba%e5%8a%9b/)
56
+
57
+ ```PHP
58
+
59
+ <table>
60
+
61
+ <tbody>
62
+
63
+ <tr>
64
+
65
+ <th>サンプル</th>
66
+
67
+ <?php
68
+
69
+ // チェックされていない項目も含めてチェックボックス全体を取得
70
+
71
+ $field = get_field_object( 'equipment01' );
72
+
73
+ // チェックされている項目を取得(配列)
74
+
75
+ $equipment = get_field( 'equipment01' );
76
+
77
+ if ( empty( $equipment ) ) // 一つもチェックされていなければ空の配列にする
78
+
79
+ $equipment = array(); ?>
80
+
81
+
82
+
83
+ <?php // 選択肢ぜんぶをループ
84
+
85
+ foreach ( $field['choices'] as $key => $value ):
86
+
87
+ // $key : 選択肢の内部コード
88
+
89
+ // $value : 選択肢のラベル(AAA, BBB, CCC, DDD)
90
+
91
+ // 選択肢がチェックされていたらクラスを付ける
92
+
93
+ $checked = in_array( $key, $equipment ) ? 'class="checked"' : ''; ?>
94
+
95
+ <td <?php echo $checked; ?>><?php echo $value; ?></td>
96
+
97
+ <?php endforeach; ?>
98
+
99
+ </tr>
100
+
101
+ </tbody>
102
+
103
+ </table>
104
+
105
+ ```
106
+
107
+ 【①の結果】
108
+
109
+ var_dump($checked);がNULLで、classが付与されません。
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+ **試したコード②**(参考サイト:https://stackoverflow.com/questions/31386261/add-class-to-acf-multi-select)
118
+
119
+ ```PHP
120
+
121
+ <table>
122
+
123
+ <tbody>
124
+
125
+ <tr>
126
+
127
+ <th>サンプル</th>
128
+
129
+ <?php
130
+
131
+ $equipment01 = get_field_object('equipment01');
132
+
133
+ $choices = $equipment01['choices'];
134
+
135
+ $values = $equipment01['value'];
136
+
137
+
138
+
139
+ if ( $equipment01 ):
140
+
141
+
142
+
143
+ foreach ( $choices as $key => $choice) {
144
+
145
+ $class = in_array($key, $values) ? 'class="checked"' : '';
146
+
147
+ echo '<td ' . $class . '>'. $choice .'</td>';
148
+
149
+ }
150
+
151
+ endif;
152
+
153
+ ?>
154
+
155
+ </tr>
156
+
157
+ </tbody>
158
+
159
+ </table>
160
+
161
+ ```
162
+
163
+ 【②の結果】
164
+
165
+ var_dump($class);がNULLで、classが付与されません。
166
+
167
+
168
+
169
+
170
+
171
+
172
+
173
+ **試したコード③**(参考:https://teratail.com/questions/231276)
174
+
175
+ ``` PHP
176
+
177
+ <table>
178
+
179
+ <tbody>
180
+
181
+ <tr>
182
+
183
+ <th>サンプル</th>
184
+
185
+ <?php
186
+
187
+ // チェックされていない項目も含めてチェックボックス全体を取得
188
+
189
+ $field = get_field_object( 'equipment01' );
190
+
191
+ // チェックされている項目を取得(配列)
192
+
193
+ $equipment = get_field( 'equipment01' );
194
+
195
+ if ( empty( $equipment ) ) // 一つもチェックされていなければ空の配列にする
196
+
197
+ $equipment = array(); ?>
198
+
199
+
200
+
201
+ <?php // 選択肢ぜんぶをループ
202
+
203
+ var_dump($checked);
204
+
205
+ foreach ( $field['choices'] as $key => $value ):
206
+
207
+ // $key : 選択肢の内部コード
208
+
209
+ // $value : 選択肢のラベル(AAA, BBB, CCC, DDD)
210
+
211
+ // 選択肢がチェックされていたらクラスを付ける
212
+
213
+ $checked = in_array( $key, $equipment ) ? ' checked' : ''; ?>
214
+
215
+ <td class="<?php echo $checked; ?>"><?php echo $value; ?></td>
216
+
217
+ <?php endforeach; ?>
218
+
219
+ </tr>
220
+
221
+ </tbody>
222
+
223
+ </table>
224
+
225
+ ```
226
+
227
+ 【③の結果】
228
+
229
+ var_dump($checked);がNULLで、classが付与されません。また、<li class>AAA</li>と出力されてしまいます。
230
+
231
+
232
+
233
+
234
+
49
235
  【ご教示いただきたいこと】
50
236
 
237
+ 以上、過去同じような事例で解決された方々のコードを色々と試しましたが、なぜか私の場合はclassが付与されません。
238
+
51
- チェックの付いた(選択された)項目にのみ「checked」というclassを付与する
239
+ チェックの付いた(選択された)項目にのみ「checked」というclassを付与する方法について、何か原因や正しいコードなど、お分かりのことがございましたら、ご教示のほどよろしくお願いいたします。
52
-
53
-
54
-
55
- 以上です。(checkedクラスの付いたものに背景色を付けることは自分でできます。)
56
-
57
-
58
-
59
- どのようなphpコードを書くのか、はたまたfunctions.phpに記述するのか、どうすればいいのか全く検討も付いておりません。
60
-
61
-
62
-
63
- お手数おかけいたしますが、何卒よろしくお願いいたします。