2015-06-12 2 views
4

Я пытаюсь вставить 2 статических div внутри петли PHP, в частности, один в самом начале цикла и один в самом конце.Вставить статические блоки в цикл PHP

Эти 2 div должны появиться в их соответствующем родителе .row, который в настоящее время обтекает каждые 3 DIV. Как я могу это сделать?

EDIT Вот изображение, чтобы описать то, что мне нужно, розовые блоки являются вручную вставленным DIV-х, которые будут иметь разное содержание для голубых див. Эти голубые дивы только WP сообщений:

enter image description here

Вот мой PHP, в настоящее время это создает 4 столбцов в первой и последней строки, где она должна быть просто 3 колонки:

<?php static $c=1; 
     $subs = new WP_Query(array('post_parent' => 14, 'post_type' => 'page')); 
     if($subs->have_posts()) : while($subs->have_posts()) : $subs->the_post(); ?> 

      <?php if (($c % 3) === 1) { 
      // This creates part of the wrapper .row div 
      echo "<div class='row'>"; 
      } ?> 

      <?php 
      if ($c == 1) {?> 
      <div class="col_4 card bar"> 
       first card that is manually inserted with different content 
      </div> 
      <?php } ?> 

       <a href="<?php the_permalink(); ?>" class="col_4 card bar no-pad <?php if($c % 3 == 0) { echo 'last'; } ?>"> 
       <?php if (has_post_thumbnail()) {?> 
       <div class="feature-image c-1"> 
         <?php the_post_thumbnail('medium'); ?> 
       </div> 
       <?php } ?> 
       <div class="excerpt-wrap"> 
        This is a post from within Wordpress 
       </div> 
       </a> 

      <?php if ($c == 6) {?> 
       <div class="col_4 card bar"> 
       Last card that is manually inserted with different content 
       </div> 
      <?php } ?> 

      <?php if (($c % 4) === 3) { 
      echo "</div>"; 
      }?> 
    <?php $c++; endwhile; endif; wp_reset_postdata(); ?> 

EDIT Это HTML структура, которую я бы хотел достичь:

<!-- very first row --> 
<div class="row"> 
    <!-- This is a static block followed by the very first two worpdress posts--> 
    <div class="static-block"></div> 

    <a href="#" class="wp-post"></a> 
    <a href="#" class="wp-post"></a> 
</div> 

<!-- I could have 3 or 30 wordpress posts repeating this format --> 
<div class="row"> 
    <a href="#" class="wp-post"></a> 
    <a href="#" class="wp-post"></a> 
    <a href="#" class="wp-post"></a> 
</div> 

<!-- very last row --> 
<div class="row"> 
    <!-- These are the very two worpdress posts followed by a static block --> 
    <a href="#" class="wp-post"></a> 
    <a href="#" class="wp-post"></a> 

    <div class="static-block"></div> 
</div> 
+0

Не совсем понятно, что вы пытаетесь сделать. http://stackoverflow.com/help/mcve – treegarden

+0

@treegarden Я добавил изображение, чтобы надеяться сделать все более ясным – egr103

+0

И что не работает в вашем коде? – treegarden

ответ

0
<?php 
    $c = 1; 
    $subs = new WP_Query(array('post_parent' => 14, 'post_type' => 'page')); 
    if ($subs->have_posts()) : 
    ?> 
     <div class='row'> 
      <?php 
       while ($subs->have_posts()) : $subs->the_post(); 
       if (($c % 3) == 0 || $c == 3): 
      ?> 
     </div><div class='row'> 
     <?php 
       endif; 
     ?> 
     <?php 
      if ($c == 1): 
     ?> 
      <div class="col_4 card bar"> 
      first card that is manually inserted with different content 
      </div> 
     <?php endif; ?> 

     <a href="<?php the_permalink(); ?>" class="col_4 card bar no-pad <?php if ($c % 3 == 0) { echo 'last'; } ?>"> 
     <?php if (has_post_thumbnail()) { ?> 
      <div class="feature-image c-1"> 
       <?php the_post_thumbnail('medium'); ?> 
      </div> 
     <?php } ?> 
      <div class="excerpt-wrap"> 
       This is a post from within Wordpress 
      </div> 
     </a> 

     <?php if ($c == 7) { ?> 
      <div class="col_4 card bar"> 
       Last card that is manually inserted with different content 
      </div> 
     <?php } ?> 


    <?php 
     $c++; 
     endwhile; 
    ?> 
    </div>       
<?php 
    endif; 
    wp_reset_postdata(); 
?> 

если есть более 7 страницы и и хотите добавить статический блок на последний только изменение 7 размещать значение счетчика ($ с == $ суб-> POST_COUNT)

enter image description here

+0

Это работает блестяще. Только то, что я хотел! Спасибо Рави! – egr103

+0

Быстрый вопрос: используя свой код, как установить глобальный счетчик для ВСЕХ блоков? – egr103

0

EDIT: извините, кажется, что я видел ваше сообщение, прежде чем вы загрузили изображения каркаса.

Это не очень ясно для меня цель вашего кода. Но то, что я понимаю, вам нужно создать структуру, как это:

<div class='row'> 
    <div class='static'> 
    </div> 
    <div class='static'> 
    </div> 

    #here the loop will create 
    <div></div> 
    <div></div> 
    <div></div> 

    <div class='static'> 
    </div> 
    <div class='static'> 
    </div> 
</div> 

и это будет дублироваться на столько я в вашем пока у вас есть.

Если это то, что вам нужно, тогда я думаю, что вам нужно сделать счет 1,2,3 с переменной $ c. Каждый раз, когда вы находитесь в $ c = 1, печатаете первые 2 статических divs, а когда вы находитесь в $ c = 3, печатаете последние 2 статических div. Сбросьте $ c до 1, когда вы достигнете $ c = 3 и включите условие, спрашивая, имеет ли последний элемент и его $ c! = 3, чтобы вы распечатывали последние 2 статических div.

+0

После просмотра изображения, которое вы только что загрузили, решение, которое я дал бы, останется таким же, просто считая 4 вместо 3 и добавление 1 div в начале и конце. Надеюсь, это то, что вам нужно. –

+0

Спасибо за ответ. См. Мой обновленный вопрос с идеальной структурой HTML – egr103

+0

, в этом случае вам нужно взять длину массива.остаток 2 (для первой строки) и разделите оставшиеся на 3. Результатом будет количество сырых, которые вы будете иметь в середине (где не будет напечатано никаких статических разделителей) .., а остальные из этого подразделения будут остальными 1 или 2 divs (которые вы будете округлить с ceil (i * 3)), и у вас будет последняя строка, которую вам нужно будет подсчитать, и когда вы находитесь в этом положении, вы узнаете, что вам нужно распечатать последний статический div. Что вы должны думать, что происходит, если количество элементов равно 32. Что происходит с последним статическим элементом? –

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