Я пытаюсь определить переменные внутри цикла foreach, используя setup_postdata
. Я надеялся установить для каждой переменной сложное условие, чтобы было проще возвращать значение в моем HTML. Вместо этого я получаю пустой HTML и одну строку в конце каждого цикла.
Ниже приведена упрощенная версия моего кода. Вывод правильный, если я вызываю каждую функцию встроенной, а не как переменную. Самое странное замечание, что $image_url
работает, и я получаю ожидаемый вызов изображения. Все остальные переменные возвращаются в виде одной строки в конце цикла.
Чего мне не хватает? Есть ли другой способ написать это, о котором я не думаю?
<?php foreach ($posts as $post) : setup_postdata($post); ?>
<?php // define vars for later use
$post_link = the_permalink();
$headline = the_title();
$image_url = get_the_post_thumbnail_url();
$excerpt = the_field('post_subheader');
?>
<img class="hero-carousel__slide-background" src="<?php echo $image_url; ?>">
<div class="hero-carousel__slide-content">
<a class="hero-carousel__link" href="<?php echo $post_link; ?>">
<h1 class="hero-carousel__headline">
<?php echo $headline; ?>
</h1>
<p class="hero-carousel__excerpt">
<?php echo $excerpt; ?>
</p>
</a>
</div>
<?php endforeach; wp_reset_postdata(); ?>
Выход
<img class="hero-carousel__slide-background" src="//mydomain.com/path-to-image/">
<div class="hero-carousel__slide-content">
<a class="hero-carousel__link" href="">
<h1 class="hero-carousel__headline">
</h1>
<p class="hero-carousel__excerpt">
</p>
</a>
</div>
//mydomain.com/link-to-post/Title of PostContent of Subhead the_field