PHPwhile
命令不是这样工作的,它需要在同一个代码块中开始和结束。你不能在一个里面启动if
然后在其他地方结束(尽管那会很好!)
你能做的就是测试have_posts
在开始之前while
循环,然后在新变量中保留所需的查询。所以我想你想要这样的东西。我假设您的两个$post\\u cat和$post\\u标记搜索可以满足您对这两种情况的需要,即如果此标记没有任何内容,$post\\u标记将为空,而$post\\u cat将获得您想要的内容。
此代码未经测试,但应该执行您想要的操作。HTH公司
<?php
// Args to get what we want for the category
$catArgs = array(
\'posts_per_page\' => \'1\',
\'cat\' => \'3\'
);
// Args to get one post with tag event
$tagArgs = array(
\'posts_per_page\' => \'1\',
\'cat\' => \'3\',
\'tag\' => \'event\'
);
$tagQuery = new WP_Query( $tagArgs );
// if there\'s something in the tagquery we\'ll use it, otherwise we\'ll use the other query
if ($tagQuery->have_posts()) {
$loopQuery = $tagquery;
} else {
$loopQuery = new WP_Query( $catArgs );
}
while ($loopQuery->have_posts()): $loopQuery->the_post();
?>
<b>loop stuff here</b>
<?php
endwhile;
?>