我正在尝试编写一个查询帖子,以便返回一个列表中固定的一个列表,其中列出了与该类别相关的任何一个标记。例如:
<?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>'; } } } ?>
Post_Title_1#tag1
Post_Title_2#tag2
Post_Title_3#tag3
Post_Title_4#tag2&lt; - 我不会发布这个帖子,因为已经显示了Tag2。
问题是我只想要显示带有唯一标签的帖子....我该怎么做...请帮助
答案 0 :(得分: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>';
?>
所以基本上你需要将获取标记的代码移到顶部,如果数组已经存在则检查它。如果是,请转到下一篇文章,否则显示帖子的其余部分。