Использование поля ACF со страницы внутри цикла постов?

Вопрос или проблема

У меня есть страница, настроенная с пользовательскими полями с использованием Advanced Custom Fields. Одно из полей — это текстовое поле для указания текста для кнопки “Читать далее”. В шаблоне страницы у меня есть запрос на публикацию, чтобы подтянуть публикацию, и я хотел бы использовать поле ACF для текста “Читать далее” в этом цикле. Однако, поскольку поле ACF связано со страницей, оно не работает, когда я пытаюсь вызвать его изнутри цикла публикаций:

<?php query_posts('showposts=1&post_type=post&cat=1'); if ( have_posts() ): ?>
    <?php while ( have_posts() ) : the_post(); ?>
      <h4><?php the_title(); ?></h4>
      <p><?php the_excerpt(); ?></p>
  </div>
  <a class="btn" href="https://wordpress.stackexchange.com/questions/267940/<?php the_permalink(); ?>">
    <!-- Это поле, связанное со страницей -->
    <?php the_field('readmore_label'); ?>
  </a>
</div>
<?php endwhile; wp_reset_query(); endif; ?>

Можно ли использовать пользовательское поле страницы в цикле публикаций в шаблоне страницы?

Передайте ID страницы в ваш вызов the_field. Поскольку это не обычный цикл, ACF не знает, по какой публикации или странице вы спрашиваете, без явного указания.

Ответ или решение

Использование ACF поля страницы в цикле постов является интересной задачей, и ее решение может значительно улучшить пользовательский интерфейс вашего веб-сайта на WordPress. Вам предстоит интегрировать поле "читать далее", созданное с помощью Advanced Custom Fields (ACF), которое связано с определенной страницей, в цикл постов на этой странице. Вопрос заключается в том, как корректно извлечь значение поля, ассоциированного со страницей, внутри цикла постов.

Проблема

Вам необходимо отобразить значение текстового поля ACF, предназначенного для кнопки "читать далее", в шаблоне страницы, где реализован запрос постов. Однако напрямую такая интеграция не работает, так как поле связано с определенной страницей, а не с отдельными постами.

Решение

Для получения значения ACF поля, связанного со страницей, внутри цикла постов, вам необходимо использовать функцию the_field() с указанием ID страницы, с которой связано это поле. Это позволит явным образом указать, из какой именно страницы брать данные.

Вот как это можно реализовать в вашем коде:

<?php
$page_id = get_queried_object_id(); // Возьмем ID текущей страницы
query_posts('showposts=1&post_type=post&cat=1');

if (have_posts()): ?>
    <?php while (have_posts()) : the_post(); ?>
        <h4><?php the_title(); ?></h4>
        <p><?php the_excerpt(); ?></p>
        <a class="btn" href="<?php the_permalink(); ?>">
            <?php the_field('readmore_label', $page_id); // Указание ID страницы ?>
        </a>
    <?php endwhile; wp_reset_query(); ?>
<?php endif; ?>

Объяснение

  1. Определение ID страницы: Используем функцию get_queried_object_id() для получения идентификатора текущей страницы. Это необходимо, чтобы указать, откуда именно следует получать данные ACF.

  2. Использование ID в the_field: Теперь, вызов the_field('readmore_label', $page_id); включает ID страницы как второй параметр, позволяя функции четко определить, откуда статическое поле находится в ACF.

  3. Оптимизация кода: Убедитесь, что ваш код размещен в нужных секциях шаблона WordPress и все запросы данных выполняются корректно.

Заключение

Реализация такого решения не только улучшит функциональность вашего сайта, но и предоставит пользователю персонализированный интерфейс, отображая актуальную информацию непосредственно с главной страницы. Важно помнить, что работа с ACF в сочетании с запросами требует внимательности к деталям, особенно при указании источников данных.

Оцените материал
Добавить комментарий

Капча загружается...