输出表中的 ACF 灵活内容字段(表头不通过循环重复)

Posted

技术标签:

【中文标题】输出表中的 ACF 灵活内容字段(表头不通过循环重复)【英文标题】:Output ACF Flexible Content fields in a table (with the table header not to be repeated through loop) 【发布时间】:2020-02-12 14:44:27 【问题描述】:

我想制作一个包含灵活内容字段的表格。

主要有两个问题

如果我在循环外插入表格主题代码,表格标题会针对每个字段(灵活内容行)重复。

如果我在循环中插入表格主题代码,数据不会正确进入表格。表格中只有第一个灵活内容行的一些字段。其余的灵活内容行没有出现。 (除了第一个表格行,表格也是空的。)

如何制作只有一个表头的表格,并让所有灵活的内容行及其字段在表格中正确显示?

已编辑:下面是中继器域代码。我已经转移到中继器领域。

<?php if ( have_rows( 'pokemon_level_up' ) ) : ?>

    <table>
        <caption>รายละเอียดท่า</caption>
            <thead>
                <tr>
                    <th scope="col">เลเวล</th>
                    <th scope="col">ท่า</th>
                    <th scope="col">ชนิด</th>
                    <th scope="col">ประเภท</th>
                    <th scope="col">ความแรง</th>
                    <th scope="col">ความแม่นยำ</th>
                    <th scope="col">PP</th>
                    <th scope="col">% เอฟเฟกที่สอง</th>
                </tr>
            </thead>

    <?php while ( have_rows( 'pokemon_level_up' ) ) : the_row(); ?>

        <?php $move_id = get_sub_field('pokemon_select_move'); ?>

                <tr>
                    <td data-label="เลเวล"><?php the_sub_field( 'pokemon_level' ); ?></td>
                    <td data-label="ท่า"><?php echo '<a href="'.get_permalink( $move_id ).'">'.get_the_title( $move_id ).'</a>'; ?></td>
                    <td data-label="ชนิด"><?php $move_type = get_field( 'move_type', $move_id ); ?>
                        <?php if ( $move_type )  ?>
                            <img src="<?php echo $move_type['url']; ?>"  />
                        <?php  ?></td>
                    <td data-label="ประเภท"><?php $move_category = get_field( 'move_category', $move_id ); ?>
                        <?php if ( $move_category )  ?>
                            <img src="<?php echo $move_category['url']; ?>"  />
                        <?php  ?></td>
                    <td data-label="ความแรง"><?php the_field( 'move_power', $move_id ); ?></td>
                    <td data-label="ความแม่นยำ"><?php the_field( 'move_accuracy', $move_id ); ?></td>
                    <td data-label="PP"><?php the_field( 'move_pp', $move_id ); ?></td>
                    <td data-label="% เอฟเฟกที่สอง"><?php the_field( 'move_secondary_effect', $move_id ); ?></td>
                </tr>
                <tr>
                    <td colspan="8"><?php the_field( 'move_description', $move_id ); ?></td>
                </tr>
            </table>

    <?php endwhile; ?>
<?php else : ?>
    <?php // no rows found ?>
<?php endif; ?>

这是原始表格源代码 https://codepen.io/AllThingsSmitty/pen/MyqmdM

实际上,我本可以使用中继器字段。我从这个https://www.youtube.com/watch?v=uRVslHJR9to得到了一个想法

所以,我选择了灵活的内容而不是重复字段。

你能帮我修改一下代码吗?或者我应该使用转发器字段吗? (如果它可以做与该特定 YouTube 视频中教授的相同的技巧。)

谢谢!

【问题讨论】:

如果“主题外循环”的唯一问题是重复的标题,您可以只使用循环计数器变量。然后仅在第一个循环中显示标题。 刚刚注意到:将 endwhile 放在关闭 table 标记之前,应该可以解决它 简单但高效!!它按您的预期工作。非常感谢 【参考方案1】:

所有的事情都会在while循环中重复。

因此,请将您的 &lt;tbody&gt; 保留在 while 循环之外。所以在 While 循环中,只有 &lt;tr&gt;&lt;tr&gt; 会重复。

【讨论】:

感谢您的回复!我以前尝试过,但没有成功。只有第一个中继器行中的数据以表格形式正确显示。其余的行确实出现了,但它们在表格之外。 好的。让我再检查一次 正确的。 你试过这个吗? support.advancedcustomfields.com/forums/topic/… 感谢您为我提供的帮助。我只需要将 endwhile 放在 之前 是的。我之前说过你。

以上是关于输出表中的 ACF 灵活内容字段(表头不通过循环重复)的主要内容,如果未能解决你的问题,请参考以下文章

来自自定义帖子分类法循环的 slug 列表(Wordpress + ACF Pro)

表中的 ACF 中继器字段 - 在 PHP 模板中

如何隐藏 ACF 中灵活内容框中的复选框但不隐藏其他复选框

ACF 页面 while 循环在循环时中断页脚

从 ACF 转发器字段中获取 meta_key

Elementor 中的 ACF 组内容?