显示包含关系字段值的帖子列表[ACF]

时间:2015-12-31 作者:Stanley Umeanozie

我有一种称为“Writers”的帖子类型和另一种称为“Documents”的帖子类型。

我使用高级自定义字段中的关系字段将写入者列表(发布对象)链接到文档。这意味着该字段基本上是一个包含多个writer的数组(有些只包含一个writer)。

我在我的主题中有一个模板,我会在每个作者的帖子中显示其他信息。我想显示他们参与的文档列表(即在关系字段中包含作者姓名的帖子)。

我尝试了以下查询,但不起作用:

$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();

2 个回复
最合适的回答,由SO网友:Prasad Nevase 整理而成

根据您在下面评论中的澄清,我正在更新我的完整答案。我希望这有助于:

<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>

SO网友:Australianreindeer

如果有人在显示5个以上的结果时遇到问题,这里有一个小小的调整。

$documents = get_posts(array(
                     \'post_type\' => \'document\',
                     \'posts_per_page\' => -1, //add this line

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post