Mostrar lista de publicaciones que contienen un valor de campo de relación [ACF]

2

Tengo un tipo de publicación llamado 'Escritores' y otro tipo de publicación llamado 'Documentos'.

Utilizo el campo Relación en Campos personalizados avanzados para vincular una lista de escritores (publicar objetos) a un documento. Esto significa que el campo es básicamente una matriz que contiene varios escritores (algunos contienen solo uno).

Tengo una plantilla en mi tema donde muestro información adicional para cada escritor dentro de sus publicaciones individuales. Me gustaría mostrar una lista de los documentos a los que han contribuido (es decir, las publicaciones que contienen el nombre del autor en el campo de relación).

He intentado la siguiente consulta pero no funciona:

$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();
    
pregunta Stanley Umeanozie 31.12.2015 - 13:12

1 respuesta

4

Estoy actualizando mi respuesta completa en base a su aclaración en el comentario a continuación. Espero que esto ayude:

<div class="entry-content">

   <h2>Documents written by this writer</h2>
        <?php 
        /*
         *  Query posts for a relationship value.
         *  This method uses the meta_query LIKE to match the string "123" to the database value a:1:{i:0;s:3:"123";} (serialized array)
         */

         $documents = get_posts(array(
                     'post_type' => 'document',
                     'meta_query' => array(
                      array(
                            'key' => 'writer', // name of custom field
                            'value' => '"' . get_the_ID() . '"', // matches exaclty "123", not just 123. This prevents a match for "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>
    
respondido por el Prasad Nevase 31.12.2015 - 15:34

Lea otras preguntas en las etiquetas