Определение переменных для использования внутри цикла foreach с помощью setup_postdata - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь определить переменные внутри цикла 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
...