Visualizzare un Elenco di Post che Contengono un Valore di un Campo di Relazione [ACF]
Ho un post type chiamato 'Scrittori' e un altro post type chiamato 'Documenti'.
Utilizzo il campo Relationship in Advanced Custom Fields per collegare una lista di Scrittori (post object) a un Documento. Questo significa che il campo è fondamentalmente un array che contiene più scrittori (alcuni contengono solo uno).
Ho un template nel mio tema dove mostro informazioni aggiuntive per ogni Scrittore all'interno dei loro singoli post. Vorrei visualizzare un elenco di documenti a cui hanno contribuito (cioè Post che contengono il nome dello scrittore nel campo relationship).
Ho provato la seguente query ma non funziona:
$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();

Sto aggiornando la mia risposta completa basandomi sulla tua chiarificazione nel commento qui sotto. Spero che questo ti aiuti:
<div class="entry-content">
<h2>Documenti scritti da questo autore</h2>
<?php
/*
* Query per i post con un valore di relazione.
* Questo metodo usa meta_query LIKE per confrontare la stringa "123" con il valore del database a:1:{i:0;s:3:"123";} (array serializzato)
*/
$documents = get_posts(array(
'post_type' => 'document',
'meta_query' => array(
array(
'key' => 'writer', // nome del campo personalizzato
'value' => '"' . get_the_ID() . '"', // corrisponde esattamente a "123", non solo 123. Previene corrispondenze con "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>

Ciao ItsMePN, scusa se non mi sono spiegato bene. Il campo relationship contiene effettivamente un array di "Scrittori" che sono collegati ai Documenti. Quindi, vorrei visualizzare una lista di Documenti che contengono il nome dello Scrittore corrente. Grazie.

Anche questa è stata la mia soluzione. È estremamente importante inserire il meta_query in un array DENTRO un altro array per farlo funzionare. Grazie!
