ворд-пресс.рф
Разработка

Связи между записями через ACF Relationship: настройка и вывод

Настройка отношений между CPT и страницами через ACF Relationship, с безопасным PHP-шаблоном.

Поле ACF Relationship позволяет редактору связать одну запись с несколькими материалами: например, к карточке маршрута прикрепить достопримечательности, а к кейсу — использованные услуги. Для вывода списка в шаблоне достаточно получить массив выбранных записей и их ID.

Как настроить поле

  1. Создайте в ACF группу полей для нужного типа записи.
  2. Добавьте Relationship с именем related_projects.
  3. В настройках ограничьте доступные типы записей и, если нужно, их статус/таксономии.
  4. Выберите Return Format: Post ID — пример ниже ожидает массив числовых идентификаторов.
  5. Сохраните группу и назначьте связанные записи в редакторе.

Пример вывода связанных записей

<?php
if ( ! function_exists( 'get_field' ) ) {
    return;
}
$ids = get_field( 'related_projects', get_the_ID() );
if ( is_array( $ids ) && $ids ) {
    echo '<ul class="related-projects">';
    foreach ( $ids as $id ) {
        $id = absint( $id );
        if ( ! $id || get_post_status( $id ) !== 'publish' ) {
            continue;
        }
        $url = get_permalink( $id );
        if ( ! $url ) {
            continue;
        }
        echo '<li><a href="' . esc_url( $url ) . '">';
        echo esc_html( get_the_title( $id ) );
        echo '</a></li>';
    }
    echo '</ul>';
}

Использование get_the_title($id) и get_permalink($id) позволяет не изменять глобальный объект $post. Если в ACF выбран возврат Post Object, потребуется получать $item->ID вместо (int) $item.

Односторонняя или двусторонняя связь

Обычное поле на записи A хранит выбранные ID записей B. Это не означает, что на каждой B автоматически есть обратная связь. Для неё нужен отдельный механизм или настройка bidirectional, если она поддерживается используемой версией ACF и выбранной конфигурацией полей.

Проверка и масштабирование

  • Редактор может выбрать только разрешённые записи.
  • Снятая с публикации связанная запись не появляется на сайте.
  • Удалённые ID не приводят к ошибкам шаблона.
  • Вывод не раскрывает приватные и черновые записи.
  • При большом количестве связей оцените нагрузку и необходимость кэширования.

Для публичных сортируемых каталогов важнее заранее продумать структуру и индексы, а не просто добавлять десятки Relationship-полей.

Источник: https://www.advancedcustomfields.com/resources/relationship/

Материал был полезен?

Помогите нам сделать материалы точнее и понятнее.