質問編集履歴
1
投稿後に試したことを追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -5,13 +5,14 @@
|
|
5
5
|
|
6
6
|
【現状できていること】
|
7
7
|
とりあえず、下記のphpコードで全部の選択肢は表示させることができました。
|
8
|
+
(参考サイト:https://www.advancedcustomfields.com/resources/get_field_object/)
|
8
9
|
```PHP
|
9
10
|
<table>
|
10
11
|
<tbody>
|
11
12
|
<tr>
|
12
13
|
<th>サンプル</th>
|
13
14
|
<?php
|
14
|
-
$field = get_field_object('
|
15
|
+
$field = get_field_object('equipment01');
|
15
16
|
if( $field['choices'] ): ?>
|
16
17
|
<?php foreach( $field['choices'] as $value => $label ): ?>
|
17
18
|
<td><?php echo $label; ?></td>
|
@@ -22,11 +23,98 @@
|
|
22
23
|
</table>
|
23
24
|
```
|
24
25
|
|
25
|
-
【
|
26
|
-
|
26
|
+
【追記】
|
27
|
+
他にも、下記コードでも試してみました。
|
28
|
+
**試したコード①**(参考サイト: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/)
|
29
|
+
```PHP
|
30
|
+
<table>
|
31
|
+
<tbody>
|
32
|
+
<tr>
|
33
|
+
<th>サンプル</th>
|
34
|
+
<?php
|
35
|
+
// チェックされていない項目も含めてチェックボックス全体を取得
|
36
|
+
$field = get_field_object( 'equipment01' );
|
37
|
+
// チェックされている項目を取得(配列)
|
38
|
+
$equipment = get_field( 'equipment01' );
|
39
|
+
if ( empty( $equipment ) ) // 一つもチェックされていなければ空の配列にする
|
40
|
+
$equipment = array(); ?>
|
27
41
|
|
42
|
+
<?php // 選択肢ぜんぶをループ
|
43
|
+
foreach ( $field['choices'] as $key => $value ):
|
44
|
+
// $key : 選択肢の内部コード
|
45
|
+
// $value : 選択肢のラベル(AAA, BBB, CCC, DDD)
|
46
|
+
// 選択肢がチェックされていたらクラスを付ける
|
47
|
+
$checked = in_array( $key, $equipment ) ? 'class="checked"' : ''; ?>
|
48
|
+
<td <?php echo $checked; ?>><?php echo $value; ?></td>
|
49
|
+
<?php endforeach; ?>
|
50
|
+
</tr>
|
51
|
+
</tbody>
|
52
|
+
</table>
|
53
|
+
```
|
54
|
+
【①の結果】
|
28
|
-
|
55
|
+
var_dump($checked);がNULLで、classが付与されません。
|
29
56
|
|
30
|
-
どのようなphpコードを書くのか、はたまたfunctions.phpに記述するのか、どうすればいいのか全く検討も付いておりません。
|
31
57
|
|
58
|
+
|
59
|
+
**試したコード②**(参考サイト:https://stackoverflow.com/questions/31386261/add-class-to-acf-multi-select)
|
60
|
+
```PHP
|
61
|
+
<table>
|
62
|
+
<tbody>
|
63
|
+
<tr>
|
64
|
+
<th>サンプル</th>
|
65
|
+
<?php
|
66
|
+
$equipment01 = get_field_object('equipment01');
|
67
|
+
$choices = $equipment01['choices'];
|
68
|
+
$values = $equipment01['value'];
|
69
|
+
|
70
|
+
if ( $equipment01 ):
|
71
|
+
|
72
|
+
foreach ( $choices as $key => $choice) {
|
73
|
+
$class = in_array($key, $values) ? 'class="checked"' : '';
|
74
|
+
echo '<td ' . $class . '>'. $choice .'</td>';
|
75
|
+
}
|
76
|
+
endif;
|
77
|
+
?>
|
78
|
+
</tr>
|
79
|
+
</tbody>
|
80
|
+
</table>
|
81
|
+
```
|
82
|
+
【②の結果】
|
83
|
+
var_dump($class);がNULLで、classが付与されません。
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
**試したコード③**(参考:https://teratail.com/questions/231276)
|
88
|
+
``` PHP
|
89
|
+
<table>
|
90
|
+
<tbody>
|
91
|
+
<tr>
|
92
|
+
<th>サンプル</th>
|
93
|
+
<?php
|
94
|
+
// チェックされていない項目も含めてチェックボックス全体を取得
|
95
|
+
$field = get_field_object( 'equipment01' );
|
96
|
+
// チェックされている項目を取得(配列)
|
97
|
+
$equipment = get_field( 'equipment01' );
|
98
|
+
if ( empty( $equipment ) ) // 一つもチェックされていなければ空の配列にする
|
32
|
-
|
99
|
+
$equipment = array(); ?>
|
100
|
+
|
101
|
+
<?php // 選択肢ぜんぶをループ
|
102
|
+
var_dump($checked);
|
103
|
+
foreach ( $field['choices'] as $key => $value ):
|
104
|
+
// $key : 選択肢の内部コード
|
105
|
+
// $value : 選択肢のラベル(AAA, BBB, CCC, DDD)
|
106
|
+
// 選択肢がチェックされていたらクラスを付ける
|
107
|
+
$checked = in_array( $key, $equipment ) ? ' checked' : ''; ?>
|
108
|
+
<td class="<?php echo $checked; ?>"><?php echo $value; ?></td>
|
109
|
+
<?php endforeach; ?>
|
110
|
+
</tr>
|
111
|
+
</tbody>
|
112
|
+
</table>
|
113
|
+
```
|
114
|
+
【③の結果】
|
115
|
+
var_dump($checked);がNULLで、classが付与されません。また、<li class>AAA</li>と出力されてしまいます。
|
116
|
+
|
117
|
+
|
118
|
+
【ご教示いただきたいこと】
|
119
|
+
以上、過去同じような事例で解決された方々のコードを色々と試しましたが、なぜか私の場合はclassが付与されません。
|
120
|
+
チェックの付いた(選択された)項目にのみ「checked」というclassを付与する方法について、何か原因や正しいコードなど、お分かりのことがございましたら、ご教示のほどよろしくお願いいたします。
|