У меня есть повторяющееся поле на сайте WordPress через повторяющиеся поля ACF:
<?php
if( have_rows('recent_episodes') ):
$i = 1;
while ( have_rows('recent_episodes') ) : the_row();
$image = get_sub_field('video_image');
?>
<!--API CODE HERE-->
<li class="recent-episode-<?php the_sub_field('brightcove_video_id'); ?> col-md-3 col-sm-4">
<a href="#">
<img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>">
<div class="flex-caption">
<h6 class="date"><?php the_sub_field('air_date') ?></h6>
<h5 class="title"></h5>
</div>
</a>
</li>
<?php
$i++;
endwhile; else :
endif;
?>
Поле brightcove_video_id является идентификатором видео для видео в Brightcove. В идеале я хотел бы добавить соответствующий заголовок для каждого видео в повторяющемся поле. Когда я помещаю код API в повторяющуюся область, он просто выводит последний элемент каждый раз. Вот что у меня есть для кода API:
var token = "HIDDEN";
var req = "http://api.brightcove.com/services/library?"req += "command=find_video_by_id&token=" + encodeURIComponent(token);
req += "&video_id=" + videoID;
req += "&video_fields=id%2Cname%2CshortDescription%2CreferenceId&media_delivery=default//";
req += "&callback=response";
// Create a new request object
bObj = new JSONscriptRequest(req);
// Build the dynamic script tag
bObj.buildScriptTag();
// Add the script tag to the page
bObj.addScriptTag();
function response(jsonData) {
jQuery('li.recent-episode-' + videoID ).find('h5').html(jsonData.name);
}
Я пытался использовать каждую функцию, но безрезультатно. Я уверен, что я просто что-то упустил в Javascript, но вы можете использовать некоторую помощь, чтобы выяснить это.
Спасибо!
Объем videoID
в твоей функции глобально. Вы обновляете его значение каждый раз, когда выполняете скрипт. К тому времени, когда обратные вызовы запускаются (асинхронно), они зацикливаются и videoID
имеет последнее значение, которое вы в последний раз установили.
Поскольку JSON, возвращаемый из API, содержит идентификатор, было бы проще всего использовать это:
function response(jsonData) {
jQuery('li.recent-episode-' + jsonData.id ).find('h5').html(jsonData.name);
}
Других решений пока нет …