输出表中的 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循环中重复。
因此,请将您的 <tbody>
保留在 while 循环之外。所以在 While 循环中,只有 <tr>
和 <tr>
会重复。
【讨论】:
感谢您的回复!我以前尝试过,但没有成功。只有第一个中继器行中的数据以表格形式正确显示。其余的行确实出现了,但它们在表格之外。 好的。让我再检查一次 正确的。 你试过这个吗? support.advancedcustomfields.com/forums/topic/… 感谢您为我提供的帮助。我只需要将 endwhile 放在 之前 是的。我之前说过你。以上是关于输出表中的 ACF 灵活内容字段(表头不通过循环重复)的主要内容,如果未能解决你的问题,请参考以下文章