перебирать сообщения Wordpress

я пытаюсь получить сообщения WordPress, по 3 за раз, это код, который я использую:

            <?php while ( have_posts() ) : the_post() ?> 
<?php  if(get_post_meta($post->ID, 'feature', true) != true) {; ?>
         <div class="show_col">
  <?php   for ($i = 1; $i <= 3; $i++) { ?>

<div class="set">
<a href="<?php the_permalink(); ?>" title="<?php printf( __('Permalink to %s', 'your-theme'), the_title_attribute('echo=0') ); ?>" rel="bookmark"> 
<img class="image" src="http://localhost/portpress/wp-content/themes/myTemp/portfolio/<?php echo get_post_meta($post->ID, 'intro_thump', true); ?>.jpg" width="300px" alt="AUREL #<?php the_ID(); ?>" />
</a>    
<?php the_content("<P class='more'> Read More &#187; </p>"); ?>

</div>
<?php };  ?>
</div>           

<?php  }; ?>
<?php endwhile; ?>  

я знаю, что этот цикл повторяет ОДИН пост ТРИ раза, но я действительно хочу получить такой конечный результат

 <div class="show_col">
      <div class="show_col"> post1  </div>
      <div class="show_col"> post2  </div>
      <div class="show_col"> post3  </div>
 </div>
<div class="show_col">
      <div class="show_col"> post4  </div>
      <div class="show_col"> post5  </div>
      <div class="show_col"> post6  </div>
 </div>
<!-- and so on -->

я делаю это, поскольку высота каждого поста различается, поэтому я добавляю что-то вроде .show_col{clear:both}, чтобы следующие три поста шли под ним

я надеюсь, вы могли бы помочь

Спасибо


person aurel    schedule 29.08.2010    source источник


Ответы (1)


Это код, который вам нужен (я исправил часть вашего синтаксиса):

<?php $i = 0; ?>
<?php while ( have_posts() ): the_post();?> 
    <?php  if(get_post_meta($post->ID, 'feature', true) != true): ?>
    <div class="show_col">

        <?php if(($i%3) == 0): ?>
            </div>
            <div class="show_col">
        <?php endif;?>

        <div class="set">
        <a href="<?php the_permalink(); ?>" title="<?php printf( __('Permalink to %s', 'your-theme'), the_title_attribute('echo=0') ); ?>" rel="bookmark"> 
        <img class="image" src="http://localhost/portpress/wp-content/themes/myTemp/portfolio/<?php echo get_post_meta($post->ID, 'intro_thump', true); ?>.jpg" width="300px" alt="AUREL #<?php the_ID(); ?>" />
        </a>    
        <?php the_content("<P class='more'> Read More &#187; </p>"); ?>

        </div>

    </div>           

    <?php  endif; ?>
<?php $i++; ?>
<?php endwhile; ?> 

Также вы, кажется, добавляете точку с запятой после закрытия функции ( }; ), не делайте этого, в этом нет необходимости.

person Christophe    schedule 29.08.2010
comment
Это не сработает для $i == 0 ==> Это сделает пустой div. (0 % 3 == 0). - person Peter Ajtai; 29.08.2010
comment
тогда вам просто нужно инициализировать $i до 1. небольшое изменение. Итак, первая строка должна быть ‹?php $i = 1; ?› - person Christophe; 29.08.2010
comment
ваш код работает, мне просто нужно удалить ‹/div› в строках 6 и 15, так как они кажутся слишком большими (но это, возможно, из-за моего другого кода. всем спасибо - person aurel; 29.08.2010
comment
также - Peter Ajtai - фантастическое объяснение - большое спасибо, ваш код тоже работает - person aurel; 29.08.2010
comment
@aurel - пожалуйста, не забудьте отметить один из ответов как ответ. :) - person Christophe; 29.08.2010