javascript — Получить видео Brightcove из повторяющегося поля в WordPress через ACF

У меня есть повторяющееся поле на сайте 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, но вы можете использовать некоторую помощь, чтобы выяснить это.

Спасибо!

0

Решение

Объем videoID в твоей функции глобально. Вы обновляете его значение каждый раз, когда выполняете скрипт. К тому времени, когда обратные вызовы запускаются (асинхронно), они зацикливаются и videoID имеет последнее значение, которое вы в последний раз установили.

Поскольку JSON, возвращаемый из API, содержит идентификатор, было бы проще всего использовать это:

function response(jsonData) {
jQuery('li.recent-episode-' + jsonData.id ).find('h5').html(jsonData.name);
}
0

Другие решения

Других решений пока нет …