Я использую скользкий слайдер с полями ACF (WordPress). Я пытаюсь получить заголовок следующего и предыдущего поста для текущего слайда (.slick-current).
У меня есть три активных слайда с классом .slick-active, средний имеет также класс .slick-current (в дополнение к .slick-active)
<?php if (have_rows('videofeed','option')): ?>
<div class="slider-popular">
<?php while (have_rows('videofeed2','option')) : the_row(); ?>
<div class="slider-go-wrap">
<h2 class="video-title"> <?php the_sub_field('video_title'); ?> </h2><!-- the video title -->
<div class="video-controls">
<div class="prev-title-popular">
<span class="lightspan controltitles prev-videotitle">PREVIOUS TITLE HERE</span> <!-- previous ACF row sub_field "video_title" here -->
</div>
<div class="next-title-popular">
<span class="lightspan controltitles next-videotitle">NEXT TITLE HERE</span><!-- next ACF row sub_field "video_title" here -->
</div>
</div>
</div>
<?php endwhile;?>
</div>
<?php endif; ?>
Не будучи очень серверной стороной, как бы я интегрировал следующий цикл php в свой репитер полей ACF со следующими и предыдущими полевыми данными на текущем слайде? Есть ли более простой способ сделать это, чем цикл php?
$rows = get_field('videofeed');
if($rows)
{
foreach($rows as $index => $row)
{
// from there, you can get prev / next data using loop index ($rows[$index-1] / $rows[$index+1]
}
}
Любой совет здесь будет отличным.
Проблема решена с помощью следующего кода JQuery, работает для каждого слайда:
$('.slider-go-wrap').each(function() {
currentSlide = $(this);
nextSlide = currentSlide.next();
prevSlide = currentSlide.prev();
nextSlideData = nextSlide.find('.video-title').html();
prevSlideData = prevSlide.find('.video-title').html();
currentSlide.find('.next-videotitle').html(nextSlideData);
currentSlide.find('.prev-videotitle').html(prevSlideData);
});
Других решений пока нет …