Вопрос или проблема
У меня есть страница, настроенная с пользовательскими полями с использованием 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; ?>
Объяснение
-
Определение ID страницы: Используем функцию
get_queried_object_id()
для получения идентификатора текущей страницы. Это необходимо, чтобы указать, откуда именно следует получать данные ACF. -
Использование ID в
the_field
: Теперь, вызовthe_field('readmore_label', $page_id);
включает ID страницы как второй параметр, позволяя функции четко определить, откуда статическое поле находится в ACF. -
Оптимизация кода: Убедитесь, что ваш код размещен в нужных секциях шаблона WordPress и все запросы данных выполняются корректно.
Заключение
Реализация такого решения не только улучшит функциональность вашего сайта, но и предоставит пользователю персонализированный интерфейс, отображая актуальную информацию непосредственно с главной страницы. Важно помнить, что работа с ACF в сочетании с запросами требует внимательности к деталям, особенно при указании источников данных.