[英]Wordpress Advanced Custom Fields repeater display title outsite of loop
所以我有一个 mediaelement.js 音频播放器,我正在使用高级自定义字段插件,我希望能够在播放器上显示当前曲目的标题,这是我的代码
<audio class="mejs-new" style="width: 100%; height: auto;" controls width="100%" height="auto">
<?php if(get_field('audio_repeater')): ?>
<?php while(has_sub_field('audio_repeater')): ?>
<?php $title = get_sub_field('music_title'); ?>
<source src="<?php the_sub_field('music_url'); ?>" title="<?php echo $title; ?>" type="audio/mp3">
<p><?php echo $title; ?></p>
<?php endwhile; ?>
<?php endif; ?>
</audio>
编辑..
我试过在音频标签外回显标题,但它只回显第二个曲目的标题,并且在更改曲目时不会改变。
如果我理解正确,您希望将标题移到<audio />
标签之外,但您只能从循环内获取标题。
实际上,您几乎就在那里 - 最简单的方法是在循环中将标题设置为变量,而您已经在这样做( $title = get_sub_field('music_title');
)。 所以现在,您需要做的就是在需要时回显变量。
因为您在访问循环中的函数时已经设置了变量,所以您现在可以在不需要循环的情况下回显该变量。
例如:
<?php endif; ?>
</audio>
<p><?php echo $title; ?></p>
编辑:
我假设你只有一个标题,我没有质疑你为什么使用一个带有一个标题的中继器:) 之后要打印出一个标题列表,你可以使用类似的方法,除了这次你需要保存结果循环,然后再次循环。
最简单的方法是重复整个循环代码但只打印出标题,但这有点低效。 理想情况下,我们应该只获得一次该字段。 这是完成整个事情的另一种方法:
<?php $audio_repeater = get_field("audio_repeater"); ?>
<audio class="mejs-new" style="width: 100%; height: auto;" controls width="100%" height="auto">
<?php if((array) count($audio_repeater)): ?>
<?php foreach($audio_repeater as $audio_source): ?>
<source src="<?php echo $audio_source["music_url"]; ?>" title="<?php echo $audio_source["music_title"]; ?>" type="audio/mp3">
<?php endforeach; ?>
<?php endif; ?>
</audio>
<?php foreach($audio_repeater as $audio_source): ?>
<p><?php echo $audio_source["music_title"]; ?></p>
<?php endforeach; ?>
在这个例子中,我们在顶部抓取整个 ACF 中继器,并将其分配给一个变量。 然后我们检查它是否有项目,并循环遍历这些项目。
这是使用 ACF 中继器的另一种方法,它可能不像使用循环函数那么容易,但是当您稍微移动一些东西时,它会更具扩展性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.