0

カテゴリからの投稿のリスト固定リストと、それに関連付けられた1つのタグのいずれかを返すように、クエリ投稿を作成しようとしています。例:

<?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 に答える