Afisarea unei liste de postări care conțin o valoare din câmpul de relație [ACF]
Am un tip de postare numit 'Autori' și altul numit 'Documente'.
Folosesc câmpul de relație din Advanced Custom Fields pentru a lega o listă de Autori (obiecte post) unui Document. Acest câmp este practic un array care conține mai mulți autori (unele conțin doar unul).
Am un șablon în tema mea unde afișez informații suplimentare pentru fiecare Autor în postările lor individuale. Aș dori să afișez o listă de documente la care au contribuit (adică Postări care conțin numele autorului în câmpul de relație).
Am încercat următoarea interogare dar nu funcționează:
$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();

Am actualizat răspunsul meu complet pe baza clarificării din comentariul de mai jos. Sper că acest lucru vă va fi de ajutor:
<div class="entry-content">
<h2>Documente scrise de acest autor</h2>
<?php
/*
* Interoghează postări pentru o valoare de relație.
* Această metodă folosește meta_query LIKE pentru a potrivi șirul "123" cu valoarea din baza de date a:1:{i:0;s:3:"123";} (matrice serializată)
*/
$documents = get_posts(array(
'post_type' => 'document',
'meta_query' => array(
array(
'key' => 'writer', // numele câmpului personalizat
'value' => '"' . get_the_ID() . '"', // se potrivește exact cu "123", nu doar 123. Acest lucru previne potrivirea pentru "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>

Bună ItsMePN, îmi cer scuze că nu am explicat corect. Câmpul de relație conține de fapt un array de "Scriitori" care sunt legați de Documente. Așadar, vreau să afișez o listă de Documente care conțin numele Scriitorului curent. Mulțumesc.

Aceasta a fost și soluția mea. Este extrem de important să pui meta_query într-un array ÎN interiorul altui array pentru ca să funcționeze. Mulțumesc!
