Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果循环不返回POST,如何隐藏包含文本的div?_Php_Css_Wordpress_Html_Echo - Fatal编程技术网

Php 如果循环不返回POST,如何隐藏包含文本的div?

Php 如果循环不返回POST,如何隐藏包含文本的div?,php,css,wordpress,html,echo,Php,Css,Wordpress,Html,Echo,第一个循环基于主标记检索与当前帖子相关的帖子。下面显示的第二个循环基于次要标记获取帖子。如果一篇文章由第一个循环显示,则第二个循环将其排除在检索范围之外,这样就不会有重复的文章 如果没有与当前post by标记匹配的post,则不显示任何内容。这就是我的问题所在。我需要的内部(或外部)额外的元素来显示标题文本“relatedposts”(应用了一些样式,如背景色)。如果没有匹配的帖子,则不会显示,但此时会为查询检索到的每个帖子返回标题“relatedposts”。我可以看到,目前显示的每一个帖子

第一个循环基于主标记检索与当前帖子相关的帖子。下面显示的第二个循环基于次要标记获取帖子。如果一篇文章由第一个循环显示,则第二个循环将其排除在检索范围之外,这样就不会有重复的文章

如果没有与当前post by标记匹配的post,则不显示任何内容。这就是我的问题所在。我需要
的内部(或外部)额外的
元素来显示标题文本“relatedposts”(应用了一些样式,如背景色)。如果没有匹配的帖子,则不会显示,但此时会为查询检索到的每个帖子返回标题“relatedposts”。我可以看到,目前显示的每一个帖子都会得到回应。我不知道如何修改代码,使其仅在帖子上方显示一次

<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>

将逻辑与演示分开。将收集帖子和相关帖子的所有代码移到顶部,或移到其他文件或函数,并将数据存储在数组中。然后,当您到达输出HTML的部分时,您已经知道是否有相关帖子,并且可以使用if条件来决定是否输出标题。

谢谢。你的建议很有帮助。我清除了所有html,并将其替换为存储ID的
$idspost[]=$post->ID
。我已使用
进行了检查,正确的ID写在页面上。然而,我花了很多时间试图找出如何将信息传递到if条件,但我的技能非常基本。我把原来的评论搞乱了,换成了原来的代码:
while($my_query->have_posts()):$my_query->the_post();如果(!in_array($post->ID,$ids)){;$idspost[]=$post->ID;?>
混合使用新的
{}
和旧的
while:endwhile;
语法并使用换行符,您的代码会变得有点难以阅读。请尝试重新格式化以使用所有
{}
将每个语句块放在自己的行中,以便您和其他人更容易阅读和理解。我可以看到。我确实需要发布完整的原始代码以及上面的更改,但添加注释是不可能的。我需要回答自己的问题,以可读的方式呈现代码,我想t是不合适的,因为我还在寻找答案。也许我应该用新的思路问一个新的更具体的问题?