2014-09-03 2 views
0

Это для проекта wordpress, но на самом деле это больше PHP. Я выполняю запрос, чтобы вернуть максимум 12 сообщений. Каждый набор из трех столбов завернут в div под названием jobsN. Каждый пост (элемент) внутри этого div возвращается как item1, item2 и item3.PHP итерация по счету показывает неправильную последовательность

Класс item1 работает отлично, но класс jobs не возвращается, как 1-2-3-4. Он возвращается с поля 1-0-0-0. Я не могу понять, что происходит с моим счетом.

Как видно из приведенного ниже HTML, есть что-то с указанием количества заданий. Эта часть обрабатывается здесь:

<?php if ($count == 3) {?></div><?php $count = 0; ?><div class="jobs 
<?php echo $count; ?>"><?php }; ?> 

Вот полный запрос:

<?php 
      query_posts(array( 
       'post_type' => 'custom_job', 
       'showposts' => 12 
      )); 
     ?> 

     <?php if (have_posts()): $contcount = 0; $count = 0;?> 
     <?php $contcount++; ?> 
     <div class="jobs<?php echo $contcount; ?>"> 
     <?php while (have_posts()) : the_post(); $count++;?> 
      <div class="item-<?php echo $count ?>"> 
       <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2> 
       <p><?php echo get_the_excerpt(); ?></p> 
       <a href="<?php the_permalink() ?>">Learn more</a> --> 
      </div> 
      <?php if ($count == 3) {?></div><?php $count = 0; ?><div class="jobs<?php echo $count; ?>"><?php }; ?> 
     <?php endwhile; ?> 
     </div> 
     <?php endif; ?> 

Вот HTML я вернусь:

<div class="jobs1"> 
     <div class="item-1"> 
      content 
     </div> 
     <div class="item-2"> 
      content 
     </div> 
     <div class="item-3"> 
      content 
     </div> 
</div> 
<div class="jobs0"> 
     <div class="item-1"> 
      content 
     </div> 
     <div class="item-2"> 
      content 
     </div> 
     <div class="item-3"> 
      content 
     </div> 
    </div> 
<div class="jobs0"> 
     <div class="item-1"> 
      content 
     </div> 
     <div class="item-2"> 
      content 
     </div> 
     <div class="item-3"> 
      content 
     </div> 
</div> 
<div class="jobs0"> 
     <div class="item-1"> 
      content 
     </div> 
</div 
+0

Никогда не используйте 'query_posts'. Это ненадежно, нарушает основной запрос и полностью не удается в большинстве ситуаций, когда дело доходит до разбивки на страницы.Скорее используйте 'WP_Query' –

ответ

1

Эта линия проблема:

<?php if ($count == 3) {?></div><?php $count = 0; ?><div class="jobs<?php echo $count; ?>"><?php }; ?> 

Если $ Count = 3 это означает, что вы будете делить новый div, но вы также делаете $ count = 0, тогда вы эхом отдаете его как 0.

Преобразовать эту строку:

<?php if ($count == 3) {?></div><?php $count = 0; $countcount++; ?><div class="jobs<?php echo $countcount; ?>"><?php }; ?> 
+1

Это работает, хотя переменная является contcount, а не countcount. Поэтому, как только я изменил это, он сработал :) – user1486133

+0

Правильно, извините за это и спасибо за принятие. –

1

использовать эту линию

<?php if ($count == 3) {?></div><?php $count = 0; $contcount++; ?><div class="jobs<?php echo $contcount; ?>"><?php }; ?>

вместо

<?php if ($count == 3) {?></div><?php $count = 0; ?><div class="jobs<?php echo $count; ?>"><?php }; ?>

Решение:

Я обновил $contcount++ когда $count==3 и использовать в эхо-класса jobs<?php echo $contcount

+0

Если вы увеличиваете $ contcount перед его выпуском, вы получите 3 во втором блоке вместо 2 – Chococroc

+0

первый раз, когда он используется за пределами while, а 2 будет использоваться ниже, см. Выше. I обновил его когда он должен быть эхом, см. еще раз –

+0

Ничего себе, извините, я ошибся, P. Я исправил свой ответ ... – Chococroc

0

Вы используете неверный счетчик в вашем PHP:

Ваш код имеет следующую строку:

<?php if ($count == 3) {?></div><?php $count = 0; ?><div class="jobs<?php echo $count; ?>"><?php }; ?> 

И это должно быть

<?php if ($count == 3) { ?></div><?php $count = 0; $contcount++; ?><div class="jobs<?php echo $contcount; ?>"><?php }; ?> 

Потому что $count хранит товар и $contcount хранит блок элементов

+0

см. Еще раз значение вопроса 1 из $ contcount используется вне цикла while, код которого будет ставить 1-1 два раза при запуске –

+0

Кажется, что проблема с закрытием} в этой строке. – user1486133

+0

Решенный, я забыл добавить ';' в конце $ countcount. Проверьте исправленную строку кода – Chococroc

0

Попробуйте с этим, а не 100% уверен, что он будет работать

<?php 
    query_posts(array( 
     'post_type' => 'custom_job', 
     'showposts' => 12 
    )); 
?> 

<?php if (have_posts()): $contcount = 0; $count = 0;?> 
<?php $contcount++; ?> 
    <div class="jobs<?php echo $contcount; ?>"> 
     <?php while (have_posts()) : the_post(); $count++;?> 
      <div class="item-<?php echo $count ?>"> 
       <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2> 
       <p><?php echo get_the_excerpt(); ?></p> 
       <a href="<?php the_permalink() ?>">Learn more</a> 
      </div> 
      <?php if ($count == 3): ?> 
       <?php $count = 0; $countcount++;?> 
       <div class="jobs<?php echo $contcount; ?>"></div> 
      <?php endif; ?> 
     <?php endwhile; ?> 
    </div> 
<?php endif; ?> 

EDIT: Отредактированный возможная ошибка.

+0

Это ошибки при первой синтаксической ошибке «endif», неожиданной «endif» (T_ENDIF) – user1486133

Смежные вопросы