ACF 循环表复选框(WordPress)的问题

Posted

技术标签:

【中文标题】ACF 循环表复选框(WordPress)的问题【英文标题】:Problem with ACF Loop table checkbox (WordPress) 【发布时间】:2020-08-30 18:53:44 【问题描述】:

我正忙于一个 WordPress 网站并使用高级自定义字段插件。制作表格时遇到问题,因此有对或错的选项。我将添加到目前为止结果的屏幕截图。

这是当前代码:

        <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

但是我的列太多了 - 请参阅下面的屏幕截图。谁能告诉我我做错了什么?

谢谢

【问题讨论】:

介意分享 $values 和 $choices 吗? 我认为 foreach 循环太多了,所以我认为将它们结合起来是一个不错的计划:) 【参考方案1】:

因此,如果您可以提供 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

我希望那些帮助?

【讨论】:

以上是关于ACF 循环表复选框(WordPress)的问题的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress:带有过滤器的存档页面不起作用(ACF)

在 foreach 循环中获取 ACF 字段数据 - wordpress

在 Wordpress 自定义帖子类型循环中使用 ACF 分类字段作为变量

Wordpress 类别循环无法检索 ACF 图像给出图像值:NULL

返回所有带有 ACF 字段和 foreach 循环的数组值

php acf关系循环根据复选框值加载不同的模板