0

我正在尝试编写一个查询帖子,以便它从一个类别中返回一个列表固定的帖子列表以及与之关联的任何一个标签。例如:

<?php $arg = array('cat' => '1','showposts' => 10,'offset' => 0); query_posts($arg); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<a class="post-link" title="<?php the_title(); ?>" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php $posttags = get_the_tags(); $count=0; if ($posttags) { foreach($posttags as $tag) { $tag_link = get_tag_link($tag->term_id); $count++; if ($count == 1) 
{ echo '<a class="tag-link" href="'.get_tag_link($tag->term_id).'">#'.$tag->name.'</a>'; } } } ?> 

主题 A 中的帖子

Post_Title_1 #tag1
Post_Title_2 #
tag2 Post_Title_3 #tag3
Post_Title_4 #tag2 <-- 我不想要这个帖子,因为 Tag2 已经显示了。

问题是我只想显示带有独特标签的帖子....我该怎么做...请帮助

4

1 回答 1

0
<?php 
$existing_tags = array();

$arg = array('cat' => '1','showposts' => 10,'offset' => 0); query_posts($arg);

if (have_posts()) : while (have_posts()) : the_post(); 

//get tag and checking if it existed already
$posttags = get_the_tags();
$skip_post = false;

if ($posttags) {
    foreach ($posttags as $tag) {
        $tag_id = $tag->term_id; //the tag's id
        if (isset($existing_tags[$tag_id])) {
            $skip_post = true; //skip this post if the tag already exists
        } else { 
            $existing_tags[$tag_id] = true;
            $skip_post = false; //otherwise track it in our array
        }
        break; //stop after parsing the first tag
    }
}

if ($skip_post) {
    break; //skip the post
}
//display the post and tags as usual
?>
<a class="post-link" title="<?php the_title(); ?>" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php
echo '<a class="tag-link" href="'.get_tag_link($tag->term_id).'">#'.$tag->name.'</a>';
?> 

所以基本上你需要将获取标签的代码移到顶部,检查一个数组是否已经存在。如果是,请转到下一个帖子,否则显示帖子的其余部分。

于 2012-06-20T07:17:59.693 回答