如果Have_Posts包含来自某一类别的帖子

时间:2014-07-18 作者:Sofian

这个问题现在终于由我自己解决了。在本文末尾找到解决方案。问题简而言之:How can i ask in my WP template, IF the whole array of have_posts contains any post from a certain category

我对标签页进行了编程,以便根据类别将输出分为三个样式框。循环进行了三次,如果我对类别进行了分类,则使用IF。这是一个简化的工作结构草案:

<div><ul>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
  <?php if (in_category(\'cat1\')) : ?>
  <li>...
<endif>
</ul></div>
<div><ul>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
  <?php if (in_category(\'cat2\')) : ?>
  <li>...
<endif>
</ul></div>
<div><ul>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
  <?php if (in_category(\'cat3\')) : ?>
  <li>...
<endif>
</ul></div>
您可以在此处看到输出:http://imlichte.net/tag/interdependenz/

现在,我的观点是,在一个类别中找不到帖子时,要避免使用emtpy框。然后根本不应渲染长方体(div)。为此,我想为div和ul设置一个IF条件,它们位于循环之外。所以我想问一件事:

IF have_posts contains posts from a certain category

仅当结果不为零时,才会显示在页面上创建框的div和ul,从而达到抑制空框的结果。

我希望我能很好地解释我的请求,以便被理解,并希望专家能给出解决方案,因为我只是一个业余程序员。

谢谢你的帮助

编辑:为了清楚起见,下面是生成我的类别结构化标记列表的全部代码:

<div class="box">
  <h2 class="archive-title" style="text-align:center">Artikel</h2>
  <hr />
    <ul class="postlist">       

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
  <?php if (in_category(\'wissen\')) : ?>

    <li>

    <?php if (has_post_thumbnail()): ?>
        <a href="<?php the_permalink();?>"><?php the_post_thumbnail(array(150,150));?>
    <?php else: ?>
        <div class="postlistfilling"></div>
    <?php endif; ?>      

    <a class="postlisttitle" href="<?php the_permalink();?>"><?php the_title(); ?></a>

        <div class="pthumb">  
        <?php the_excerpt();?>
        </div>

        </li>
    <?php endif; endwhile; endif; ?>
    </ul>
  </div>

  <div class="box">
  <h2 class="archive-title" style="text-align:center">Empfehlungen</h2>
  <hr />
  <ul class="postlist">     

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
  <?php if (in_category(\'empfehlungen\')) : ?>

    <li>

    <?php if (has_post_thumbnail()): ?>
        <a href="<?php the_permalink();?>"><?php the_post_thumbnail(array(150,150));?>
    <?php else: ?>
        <div class="postlistfilling"></div>
    <?php endif; ?>      

    <a class="postlisttitle" href="<?php the_permalink();?>"><?php the_title(); ?></a>

        <div class="pthumb">  
        <?php the_excerpt();?>
        </div>

        </li>
    <?php endif; endwhile; endif; ?>
    </ul>
  </div>

  <div class="box">
  <h2 class="archive-title" style="text-align:center">Seminare</h2>
  <hr />
  <ul class="postlist">     

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
  <?php if (in_category(\'seminare\')) : ?>

    <li>

    <?php if (has_post_thumbnail()): ?>
        <a href="<?php the_permalink();?>"><?php the_post_thumbnail(array(150,150));?>
    <?php else: ?>
        <div class="postlistfilling"></div>
    <?php endif; ?>      

    <a class="postlisttitle" href="<?php the_permalink();?>"><?php the_title(); ?></a>

        <div class="pthumb">  
        <?php the_excerpt();?>
        </div>

        </li>
    <?php endif; endwhile; endif; ?>
    </ul>
  </div>
解决方案:我只运行了一次整个循环,以便在遇到该类别的帖子时将变量设置为true。如果没有post,var将保持false,实际循环周围的Div框将不会输出。

<?php $categoryexisting = false; 
  if (have_posts()) : while (have_posts()) : the_post();
  if (in_category(\'articles\')) :
    $categoryexisting = true;             
  endif; endwhile; endif; ?>

  <?php if ($categoryexisting): ?>   
  <div class="box">

  <h2 class="archive-title" style="text-align:center">Articles</h2>
  <hr />
    <ul class="postlist">   
  <?php endif; ?>
。。。实际循环。。。

1 个回复
SO网友:Aibrean

根据您的示例,内容必须包含在if/while语句中(如果有帖子)。否则,框将出现,内容将为空,而不是完全隐藏内容和框。

尝试以下操作:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
        <div class="box">
            <h2 class="archive-title" style="text-align:center">Artikel</h2>
            <hr />
            <ul class="postlist"> 
                <?php if (in_category(\'wissen\')) : ?>

                    <li>

                        <?php if (has_post_thumbnail()): ?>
                            <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(array(150, 150)); ?>
                            <?php else: ?>
                                <div class="postlistfilling"></div>
                            <?php endif; ?>      

                            <a class="postlisttitle" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>

                            <div class="pthumb">  
                                <?php the_excerpt(); ?>
                            </div>

                    </li>

                </ul>
            </div>  
        <?php endif; endwhile; endif; ?>

结束

相关推荐

Get all categories

我正在尝试为我的自定义帖子类型创建一个所有类别的列表。对于每个类别,我想创建一个类别名称链接。有谁能在这方面帮助我吗?