ACF 循环问题 table 复选框 (WordPress)
Problem with ACF Loop table checkbox (WordPress)
我忙于 WordPress 网站并使用 Advanced Custom Fields 插件。制作 table 有问题,所以有选项是真还是假。我将添加到目前为止的结果的屏幕截图。
这是当前代码:
<div id="abonnementen-table">
<table class="table table-hover">
<thead>
<tr>
<th>Specificaties</th>
<?php foreach($abonnementen as $abonnement){?>
<th><?php echo $abonnement->post_title;?></th>
<?php }?>
</tr>
</thead>
<tbody>
<?php
$field = get_field_object('uitgebreide_specs',$abonnement->ID);
$choices = $field['choices'];
foreach ($choices as $choice_value => $choice_label){
?>
<tr>
<td><?php echo $choice_label;?></td>
<?php
foreach($abonnementen as $abonnement){
$values = get_field('uitgebreide_specs',$abonnement->ID);
$field = get_field_object('uitgebreide_specs',$abonnement->ID);
$choices = $field['choices'];
foreach ($values as $value) {
if ($value['value'] == $choice_value) {
echo '<td><i class="fas fa-check"></i></td>';
}
}
?>
<?php }?>
</tr>
<?php } ?>
</tbody>
</table>
</div>
问题出在上面的代码上,如果选中它,它运行良好,但如果未选中该选项,则会出现问题。截图会告诉你我的问题:
我已经尝试在这一点上添加一个 else:
if ($value['value'] == $choice_value) {
echo '<td><i class="fas fa-check"></i></td>';
} else {
echo '<td></td>'; // unchecked
}
但是我的列太多了 - 请参见下面的屏幕截图。有人可以告诉我我做错了什么吗?
谢谢
所以也许如果您可以提供 ACF 字段的导出,我可以提供更好的答案。但是尽管如此,像这样添加未经检查的 td
怎么样:
$_td = 0;
foreach ( $values as $value ) {
if ( $value['value'] == $choice_value ) {
echo '<td><i class="fas fa-check"></i></td>';
$_td++;
}
}
if ( ! $_td ) { // add it if a TD hasn't been echoed
echo '<td></td>'; // unchecked
}
或者使用 array_column()
和 in_array()
的更简单版本:(这将替换整个 foreach ($values as $value) { ... }
)
$values = array_column( $values, 'value' );
if ( in_array( $choice_value, $values ) ) {
echo '<td><i class="fas fa-check">Y</i></td>';
} else {
echo '<td></td>'; // unchecked
}
我希望这些帮助?
我忙于 WordPress 网站并使用 Advanced Custom Fields 插件。制作 table 有问题,所以有选项是真还是假。我将添加到目前为止的结果的屏幕截图。
这是当前代码:
<div id="abonnementen-table">
<table class="table table-hover">
<thead>
<tr>
<th>Specificaties</th>
<?php foreach($abonnementen as $abonnement){?>
<th><?php echo $abonnement->post_title;?></th>
<?php }?>
</tr>
</thead>
<tbody>
<?php
$field = get_field_object('uitgebreide_specs',$abonnement->ID);
$choices = $field['choices'];
foreach ($choices as $choice_value => $choice_label){
?>
<tr>
<td><?php echo $choice_label;?></td>
<?php
foreach($abonnementen as $abonnement){
$values = get_field('uitgebreide_specs',$abonnement->ID);
$field = get_field_object('uitgebreide_specs',$abonnement->ID);
$choices = $field['choices'];
foreach ($values as $value) {
if ($value['value'] == $choice_value) {
echo '<td><i class="fas fa-check"></i></td>';
}
}
?>
<?php }?>
</tr>
<?php } ?>
</tbody>
</table>
</div>
问题出在上面的代码上,如果选中它,它运行良好,但如果未选中该选项,则会出现问题。截图会告诉你我的问题:
我已经尝试在这一点上添加一个 else:
if ($value['value'] == $choice_value) {
echo '<td><i class="fas fa-check"></i></td>';
} else {
echo '<td></td>'; // unchecked
}
但是我的列太多了 - 请参见下面的屏幕截图。有人可以告诉我我做错了什么吗?
谢谢
所以也许如果您可以提供 ACF 字段的导出,我可以提供更好的答案。但是尽管如此,像这样添加未经检查的 td
怎么样:
$_td = 0;
foreach ( $values as $value ) {
if ( $value['value'] == $choice_value ) {
echo '<td><i class="fas fa-check"></i></td>';
$_td++;
}
}
if ( ! $_td ) { // add it if a TD hasn't been echoed
echo '<td></td>'; // unchecked
}
或者使用 array_column()
和 in_array()
的更简单版本:(这将替换整个 foreach ($values as $value) { ... }
)
$values = array_column( $values, 'value' );
if ( in_array( $choice_value, $values ) ) {
echo '<td><i class="fas fa-check">Y</i></td>';
} else {
echo '<td></td>'; // unchecked
}
我希望这些帮助?