Поле ACF Relationship позволяет редактору связать одну запись с несколькими материалами: например, к карточке маршрута прикрепить достопримечательности, а к кейсу — использованные услуги. Для вывода списка в шаблоне достаточно получить массив выбранных записей и их ID.
Как настроить поле
- Создайте в ACF группу полей для нужного типа записи.
- Добавьте Relationship с именем
related_projects. - В настройках ограничьте доступные типы записей и, если нужно, их статус/таксономии.
- Выберите Return Format: Post ID — пример ниже ожидает массив числовых идентификаторов.
- Сохраните группу и назначьте связанные записи в редакторе.
Пример вывода связанных записей
<?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/
Материал был полезен?
Помогите нам сделать материалы точнее и понятнее.