Доступ к объекту WP_Post
Чтобы получить доступ к свойствам объекта WP_Post (например, post_title, post_content, ID и другим) в вашем повторителе ACF, нужно обращаться к ним как к свойствам объекта.
🔹 Как правильно вывести данные?
В вашем случае $row['linked_post'] содержит объект WP_Post, поэтому доступ к полям осуществляется через -> (стрелку).
Пример кода:
<?php
$repeater = get_field('linked');
if ($repeater): ?>
<?php foreach ($repeater as $row):
$post = $row['linked_post']; // Получаем объект WP_Post
?>
<div>
<h3><?php echo esc_html($post->post_title); ?></h3>
<p>ID: <?php echo intval($post->ID); ?></p>
<p>URL: <?php echo esc_url(get_permalink($post->ID)); ?></p>
<p>Дата: <?php echo esc_html($post->post_date); ?></p>
<hr>
</div>
<?php endforeach; ?>
<?php else: ?>
<p>Нет связанных записей.</p>
<?php endif; ?>
🔹 Какие ключи доступны?
У объекта WP_Post есть стандартные свойства, например:
$post->ID– ID записи$post->post_title– заголовок$post->post_content– контент$post->post_excerpt– краткое описание$post->post_date– дата публикации$post->post_name– slug (часть URL)$post->post_type– тип (post,page,custom_post_type)
🔹 Дополнительные возможности
Если вам нужно получить произвольные поля (ACF) этой записи, используйте:
$custom_field = get_field('название_поля', $post->ID);
Пример с ACF-полями связанной записи:
<?php foreach ($repeater as $row):
$post = $row['linked_post'];
$custom_field_value = get_field('название_поля', $post->ID);
?>
<div>
<h3><?php echo esc_html($post->post_title); ?></h3>
<p>Произвольное поле: <?php echo esc_html($custom_field_value); ?></p>
</div>
<?php endforeach; ?>
🔹 Вывод ссылки на запись
<a href="<?php echo esc_url(get_permalink($post->ID)); ?>">
<?php echo esc_html($post->post_title); ?>
</a>
🔹 Почему $post->post_title, а не $post['post_title']?
Потому что $row['linked_post'] возвращает объект, а не массив. В PHP доступ к свойствам объекта осуществляется через ->, а к элементам массива — через [].
🔹 Если linked_post возвращает ID, а не объект
Иногда ACF может возвращать не объект, а ID записи. Тогда нужно сначала получить объект:
$post_id = $row['linked_post']; // Если это ID
$post = get_post($post_id); // Получаем объект WP_Post
echo $post->post_title;
🔹 Итог
✅ Используйте $post->ключ для доступа к стандартным полям записи.
✅ Для ACF-полей используйте get_field('поле', $post->ID).
✅ Всегда экранируйте вывод (esc_html, esc_url).
Теперь вы можете выводить заголовки, контент и другие данные связанных записей! 🚀