从多个税项获取帖子

时间:2013-07-19 作者:Xav

我试图通过分类术语获得相关帖子。因此,标记为“伦敦”的帖子会将相关帖子标记为伦敦。如果帖子只被标记为一个分类术语,那么我的代码就可以工作了——在本例中是一个位置(entry\\u Location是分类)。但如果我将其标记为多个(如伦敦和巴黎),则不会返回任何结果。如何使其接受多个税务条款并显示两者的结果?

这就是我目前所拥有的。它只适用于标记了一个税项的帖子。

<?php
$this_post = $post->ID;
$query = new WP_Query(array(
    \'post_type\' => \'dir_entry\', 
    \'posts_per_page\' => 10, 
    \'orderby\' => \'date\', 
    \'order\' => \'DESC\', 
    \'post__not_in\' => array($this_post), 
    \'entry_location\' => get_the_term_list( $post->ID, \'entry_location\' ))
);
while ($query->have_posts()) : $query->the_post();
?>
<li class="large-6 columns">
    <a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a>
</li>

<?php endwhile; wp_reset_query(); ?>
谢谢你的建议。

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

我真的不明白那是怎么回事get_the_term_list 返回HTML字符串。

首先,你需要get_the_termswp_list_pluck.

其次,你需要tax_query. 那个{tax} = {term} 模式已弃用。

$this_post = $post->ID;
$args = array(
    \'post_type\' => \'dir_entry\', 
    \'posts_per_page\' => 10, 
    \'orderby\' => \'date\', 
    \'order\' => \'DESC\', 
    \'post__not_in\' => array($this_post), 
  );

$terms = get_the_terms($this_post,\'post_tag\');
if (!is_wp_error($terms)) {
  $terms = wp_list_pluck($terms,\'term_id\');
  $args[\'tax_query\'] = array(
    array(
      \'taxonomy\' => \'post_tag\',
      \'field\' => \'id\',
      \'terms\' => array_values($terms)
    )
  );
  $query = new WP_Query($args);
}  

结束