第一个循环根据主标记检索与当前帖子相关的帖子。下面显示的第二个循环根据辅助标记获取帖子。如果第一个循环显示帖子,则排除第二个循环检索的帖子,以便没有重复的帖子。
如果没有符合当前帖子标签的帖子,则不会显示任何内容。这是我遇到问题的地方。我需要<div id="relatedheader">
内部(或外部)的额外<ul>
元素来显示标题文字&#34;相关帖子&#34; (某些样式应用为背景颜色)。如果没有匹配的帖子,则不会显示,但此时它会返回标题&#34;相关帖子&#34;对于查询检索的每个帖子。我可以看到,此时显示的每个帖子都会显示出来。我无法看到如何更改代码以使其仅在帖子上方显示一次?
<ul id="related">
<?php
$tags = wp_get_post_tags($post->ID);
if ($tags) {
$first_tag = $tags[1]->term_id;
$args=array(
'tag__in' => array($first_tag),
'post__not_in' => array($post->ID),
'showposts'=>3, //Display this number of related posts
'ignore_sticky_posts'=>1
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); if (!in_array($post->ID, $ids)) {; echo '<div id="relatedheader">Related posts</div>'; ?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php } endwhile;
}
}
?></ul>
答案 0 :(得分:0)
将您的逻辑与演示文稿分开。将收集帖子和相关帖子的所有代码移动到顶部,或移动到不同的文件或函数,并将数据存储在数组中。然后,当您到达输出HTML的部分时,您已经知道是否有相关的帖子,并且您可以使用if条件来决定是否输出标题。