Доступ к объекту WP_Post

Чтобы получить доступ к свойствам объекта WP_Post (например, post_title, post_content, ID и другим) в вашем повторителе ACF, нужно обращаться к ним как к свойствам объекта.

🔹 Как правильно вывести данные?

В вашем случае $row['linked_post'] содержит объект WP_Post, поэтому доступ к полям осуществляется через -> (стрелку).

Пример кода:

PHP
<?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) этой записи, используйте:

PHP
$custom_field = get_field('название_поля', $post->ID);

Пример с ACF-полями связанной записи:

PHP
<?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; ?>

🔹 Вывод ссылки на запись

PHP
<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 записи. Тогда нужно сначала получить объект:

PHP
$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).

Теперь вы можете выводить заголовки, контент и другие данные связанных записей! 🚀