如果与其他分类相匹配,则列出自定义分类的术语

时间:2013-10-29 作者:tfer77

因此,这个标题令人困惑,但我想不出更好的表达方式。基本上,我有“州”和“城市”两种分类法(由于其他原因,它们必须分开)。比方说,“州”分类法中的一个术语是“康涅狄格州”,然后我想显示“城市”分类法中的一个术语列表,这些术语仅来自“州”术语为“康涅狄格州”的帖子。基本上,我想动态调用状态并在存档页面的侧栏中显示城市。。。我知道,这听起来很困惑。

这段代码可以工作,但显然会导致重复,我希望每个代码只列出一次。

<?php
$pterms = get_the_terms( $post->ID, \'property_location\' );

if ( $pterms && ! is_wp_error( $pterms ) ) : 

$prop_links = array();

foreach ( $pterms as $el_term ) {
    $prop_links[] = $el_term->name;
}

$st_location = join( ", ", $prop_links );   
?>
<?php endif; ?>
<?php endwhile; ?>

<!-- this is a separate loop -->

<?php
$args = array(
 \'post_type\' => \'property\',
 \'post_status\' => \'publish\',
 \'posts_per_page\' => -1,
 \'property_location\' => \'\'.$st_location.\'\'
);
$the_query = new WP_Query( $args ); ?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>

<p><?php echo get_the_term_list( $post->ID, \'city\', \'\', \'\', \'\' ); ?></p> 

<?php endwhile; ?>
有什么建议吗?

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

您的方法还不错,但与其将所有这些内容都重复出来,不如将它们存储在一个数组中,然后使用array_unique 在显示之前删除重复条目。

<?php 
$array_out = array();
while ($the_query->have_posts()) : $the_query->the_post(); ?>
    $terms = get_the_terms( $post->ID, \'city\'); 
    foreach($terms as $term){
        $term_link = get_term_link($term, \'city\');
        $array_out[] = \'<a href="\'.$term_link.\'">\'.$term->name.\'</a>\';
    }
endwhile; 

$array_clean = array_unique($array_out);
echo \'<p>\' . implode(\'</p><p>\', $array_clean) . \'</p>\';
我们必须使用get_term_link() 因此数组单独保存每个术语,而不是按组保存,因为它与每个帖子相关。

结束