我有一种称为“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();
最合适的回答,由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>