Используйте функцию:
$t = wp_get_post_tags($post->ID);
после вызова
the_post();
Оно вернет массив объектов, примерно такого вида:
Array
(
[0] => stdClass Object
(
[term_id] => 4
[name] => tag2
[slug] => tag2
[term_group] => 0
[term_taxonomy_id] => 4
[taxonomy] => post_tag
[description] =>
[parent] => 0
[count] => 7
)
[1] => stdClass Object
(
[term_id] => 7
[name] => tag5
[slug] => tag5
[term_group] => 0
[term_taxonomy_id] => 7
[taxonomy] => post_tag
[description] =>
[parent] => 0
[count] => 6
)
[2] => stdClass Object
(
[term_id] => 16
[name] => tag6
[slug] => tag6
[term_group] => 0
[term_taxonomy_id] => 16
[taxonomy] => post_tag
[description] =>
[parent] => 0
[count] => 2<code lang="php">
</code>
)
)
Далее делаете что то типо этого:
<?php
$a = true; //Предполагаем что пост это выводим
$t = wp_get_post_tags($post->ID);//получаем все теги для этого поста
foreach($t as $tt) {
//перебираем все теги
if ($tt->name == 'мой тег') {//здесь условие сравнения. В данном случае по имени тега. Можно использовать и другие условия для slug,term_id. Как считаете нужным.
$a =false;
break;
}
}
if ($a == true) {
?>
<div class="post excerpt2">
<?php
}
Второй вариант правильно задать аргументы в query_posts. Тут надо гуглить примеры на тему wp_query_post