2015-06-04 3 views
0

Я застреваю по запросу Я пытаюсь написать. Моя цель - создать 3 варианта использования в зависимости от количества сообщений в категории 24 для слайдера. Нет сообщений в категории 24, я бы хотел скрыть весь код. Для одного сообщения в категории 24 я хотел бы выводить HTML, который стилирует один пост. Для нескольких сообщений я хотел бы выводить HTML, который стилирует сообщения в слайдере.Case Statement for MyPosts Query Not Working

Моя проблема заключается в том, что мой код работает нормально, если нет сообщений, и если есть одно сообщение, но оно, похоже, застревает, если есть несколько сообщений. Он просто выводит случай для одного сообщения. Любая помощь будет оценена!

<div id="posts"> 
     <?php 
    $myposts = get_posts('posts_per_page=-1&category=24'); 
    // Check to make sure you have an array, set the postcount to zero if you don't. 
    if (is_array($myposts)) { 
     $postcount = count($myposts); 
    } else { 
     $postcount = 0; 
    } 
    switch($postcount) { 
     case 0: 
      // Do nothing, so no code here for no posts. 
     break; 
     case 1: 
      // Code here for what you want to do if there is only one post. 
?> 
      <?php query_posts($query_string . '&cat=24&posts_per_page=1'); ?> 
<?php if (have_posts()) : while (have_posts()) : the_post(); ?> 
      <div class="onefeatured-post"> 
    <ul id="onefeatured-post-list"><div class="onefeatured-post-image"> 
       <?php featured_post_image(); ?> 
      </div> 

      <div class="onefeatured-post-text"> 
       <h2 class="onefeatured-post-title"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2> 
       <div class="onefeatured-post-content"><?php limits(160, "Read more"); ?></div> 
      </div> 
      <div class="clearfix"></div> 
     </li></ul> 
    <div class="onefeatured-post-nav"> 
     <div id="onefeatured-post-pages"></div> 
    </div> 
</div> 
<?php endwhile; ?> 
<?php endif; ?> 
<?php 
     break; 
     default: 
      // Code here for what you want to happen if there is more than one post. 
      include (TEMPLATEPATH . '/featured-posts.php'); 
} ?> 

ответ

0

Это может быть немного более интуитивным использует нормальные условными вместо:

<div id="posts"> 
    <?php 
    $myposts = get_posts('posts_per_page=-1&category=24'); 

    if(! empty($myposts) && 1 == count($myposts)) { 
     query_posts($query_string . '&cat=24&posts_per_page=1'); 

     if(have_posts()) : while(have_posts()) : the_post(); 
    ?> 
      <div class="onefeatured-post"> 
       <ul id="onefeatured-post-list"> 
        <li> 
         <div class="onefeatured-post-image"> 
          <?php featured_post_image(); ?> 
         </div> 

         <div class="onefeatured-post-text"> 
          <h2 class="onefeatured-post-title"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2> 
          <div class="onefeatured-post-content"><?php limits(160, "Read more"); ?></div> 
         </div> 
         <div class="clearfix"></div> 
        </li> 
       </ul> 
       <div class="onefeatured-post-nav"> 
        <div id="onefeatured-post-pages"></div> 
       </div> 
      </div> 
    <?php 
     endif; 
     endwhile; 
    } elseif(! empty($myposts)) { 
     include(TEMPLATEPATH . '/featured-posts.php'); 
    } else { 
     echo "<p>No posts found</p></div>"; 
    } 
    ?> 

Первый условный поймает массивы 1 и 2-й условный поймает массив больше 1, то мы просто else, чтобы поймать пустой.

+0

Спасибо за помощь! Я открыт для изменения кода, как вы предложили. По какой-то причине я получаю синтаксическую ошибку при попытке кода. Должен ли я добавить endif или endwhile или что-нибудь еще? – butterscotch

+0

@ butterscotch да, похоже, я пропустил endif и в конце концов в первом кондоминиуме. Im на мобильном, к сожалению, поэтому я не могу исправить это в этот момент. –

+0

Большое спасибо за помощь в этом! Я добавил endif и endwhile и никаких ошибок сейчас! – butterscotch