Отображение списка записей, содержащих значение поля связи [ACF]
У меня есть тип записи 'Авторы' и другой тип записи 'Документы'.
Я использую поле Relationship в Advanced Custom Fields для связи списка авторов (объекты записей) с документом. Это означает, что поле представляет собой массив, содержащий нескольких авторов (некоторые содержат только одного).
В моей теме есть шаблон, где я отображаю дополнительную информацию для каждого автора внутри их индивидуальных записей. Я хочу показать список документов, к которым они причастны (т.е. записи, содержащие имя автора в поле связи).
Я пробовал следующий запрос, но он не работает:
$item = 0;
$writerName = get_the_title();
$my_contributions = new WP_Query( array(
'post_type' => 'documents',
'posts_per_page' => -1,
'meta_key' => 'doc_contributors',
'meta_value' => $writerName,
'meta_compare' => 'LIKE'
) );
if( $my_contributions->have_posts() ) :
while( $my_contributions->have_posts() ) :
$my_contributions->the_post();
$item++;
?>
<div class="list-line margint10 clearfix">
<?php echo esc_attr( $item ) . ". " ?><a href="<?php the_permalink(); ?>"><?php get_the_title( $my_contributions->ID ); ?></a>
<br />
</div>
<?php
endwhile;
endif;
wp_reset_query();

Я обновляю свой полный ответ на основе вашего уточнения в комментарии ниже. Надеюсь, это поможет:
<div class="entry-content">
<h2>Документы, написанные этим автором</h2>
<?php
/*
* Запрос записей по значению связи.
* Этот метод использует meta_query с LIKE для сопоставления строки "123" со значением в базе данных a:1:{i:0;s:3:"123";} (сериализованный массив)
*/
$documents = get_posts(array(
'post_type' => 'document',
'meta_query' => array(
array(
'key' => 'writer', // название произвольного поля
'value' => '"' . get_the_ID() . '"', // точное совпадение с "123", а не просто 123. Это предотвращает совпадение с "1234"
'compare' => 'LIKE'
)
)
));
?>
<?php if( $documents ): ?>
<ul>
<?php foreach( $documents as $document ): ?>
<li>
<a href="<?php echo get_permalink( $document->ID ); ?>">
<?php echo get_the_title( $document->ID ); ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</div>

Привет, ItsMePN, извини, что не объяснил подробно. Поле связи на самом деле содержит массив "Писателей", которые связаны с Документами. Поэтому я хочу отобразить список Документов, содержащих имя текущего Писателя. Спасибо.

Это было и моим решением. Крайне важно поместить meta_query в массив ВНУТРИ другого массива, чтобы это сработало. Спасибо!
