2015-10-20 2 views
-1

работает на сайте, и у меня есть некоторые трудности. Это действительно сложно или не сделано php, что я пытаюсь выполнить!Wordpress, отображаемый элемент в определенной строке

Итак, есть раздел с именем «ссылки», и каждый элемент принадлежит к строке (из 4 строк).

В моей статической страницы выглядит следующим образом:

<div id="references-tiles"> 
     <div class="reference"> 
      <div class="reference-figure malmberg"></div> 
     </div> 
     <div class="reference"> 
      <div class="reference-figure malmberg"></div> 
     </div> 
    ****<div class="references-row"></div>**** 
     <div class="reference"> 
      <div class="reference-figure port"></div> 
     </div> 
     <div class="reference"> 
      <div class="reference-figure malmberg"></div> 
     </div> 
    ****<div class="references-row"></div>**** 

     <div class="reference"> 
      <div class="reference-figure malmberg"></div> 
     </div> 
    </div> 

референс-рядные действует как сепаратор enter image description here

Каждая ссылка должна быть пост, к сожалению, WordPress не будет работать таким образом,

Loop через сообщение и отображать их один и тот же путь (только элементы)

 <div id="references-tiles"> 
      <?php 
      $query = new WP_Query(array('category_name' => 'References')); 

      if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post(); 
       $image = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID)); ?> 
       <div class="reference"> 
        <div class="reference-figure" style="background-image: url('<?php echo $image[0]; ?>')"></div> 
       </div> 
      <?php endwhile; endif; ?> 
     </div> 

enter image description here

Я просто не могу понять, как управлять таким образом, что опорный элемент добавляется к строке. Я пытался использовать некоторые по модулю утверждения, как:

if ($referenceCount % 4 == 0) 
elseif ($referenceCount % 3 == 0) 
elseif ($referenceCount % 2 == 0) 
else 

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

Есть ли способ? Возможно, чтобы пройти цикл, добавьте каждый ссылочный элемент в массив, и в зависимости от того, сколько всего элементов, я могу их разделить. Или используйте цикл 4 раза и в зависимости от модуля, добавьте ссылочный элемент в строку? Но я думаю, что этот wil сделает сайт немного медленнее.

Извините за плохой английский, я не совсем понимаю, я с удовольствием попробую объяснить себя лучше!

С уважением, спасибо! IT-student

ответ

1

Вы должны добавить свой счетчик в свой цикл.

<div id="references-tiles"> 
    <?php 
    $query = new WP_Query(array('category_name' => 'References')); 

       // Add a counter vvvvv 
    if ($query->have_posts()) : $i = 1; while ($query->have_posts()) : $query->the_post(); 
     $image = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID)); ?> 
     <div class="reference"> 
      <div class="reference-figure" style="background-image: url('<?php echo $image[0]; ?>')"></div> 
     </div> 

     <!-- If the counter is evenly divisible by 2, add a new row --> 
     <?php if ($i % 2 === 0) : ?> 
      <div class="references-row"></div> 
     <?php endif; ?> 

    <!-- Increment the counter --> 
    <?php $i++; endwhile; endif; ?> 
</div> 
+0

Я думаю, что этот wil даст каждому пункту строку самостоятельно, но не уверен. Теперь пришла к тестированию спасибо –

+0

Если это все еще отображает элементы самостоятельно ... вы испытываете проблему с CSS. В петле выше ничего плохого. – rnevius

+0

Ах да, это работает! Просто нужно подстроить его так, чтобы он показывал 4 строки с равномерно разделенными цифрами. –

0

Вы можете использовать array_chunk на возвращаемом массиве $query

Примечание: примеры использует подвесную систему FOUNDATION, чтобы лучше отобразить результат.

<?php 
/** 
* The second argument for array_chunk takes the size of the chunks 
* ie: the number of columns you want to display per row 
*/ 
$columnsPerRow = 4; 

$query = new WP_Query(array('category_name' => 'References')); 

if($query->have_posts()) : foreach(array_chunk($query->get_posts(), $columnsPerRow) as $posts) : ?> 

<div class="row"> 
<?php foreach($posts as $post) : setup_postdata($post); ?> 
    <div class="columns small-6 medium-4"> 
     <?php 
     /** 
      * Fetch the post thumbnail 
      * to be used as a background 
      */ 
     $thumbnail = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID)); 
     ?> 
     <div class="panel" style='background:url("<?php echo $thumbnail[0]; ?>")'>&nbsp;</div> 
    </div> 
<?php endforeach; ?> 
</div> <!-- end row --> 

<?php 
endforeach; 
endif; 
wp_reset_postdata(); 
?> 
+0

Спасибо, что ответили, не используя фундамент, но я собираюсь попробовать это! –

+0

Вы спустили вниз, и если да, не могли бы вы объяснить, почему, пожалуйста? –

0

Вам не нужно использовать счетчик, у Wordpress есть счетчик, поскольку он находится в их цикле.

<?php if ($query->current_post%2) { ?> 
    <div class="references-row"></div> 
<?php } ?> 

Убедитесь, что этот код находится внутри цикла и до конца.

+0

Ой действительно?Не знал этого, спасибо за это! Но я уже использовал это (со счетчиком), и в результате получается: каждый элемент получает свою собственную строку, но мне нужно иметь пару результатов в одной строке. –

+0

Имейте в виду, что '$ current_post' начинается с' 0'. Вам следует рассмотреть вопрос о добавлении к нему '1', иначе первая строка ссылок будет отображаться только после третьего сообщения. – rnevius

+0

Да, плохо понимаю. Но в этом случае, если корректное утверждение по модулю верно, это будет только предыдущая ссылка в одной строке (исправьте меня, если я ошибаюсь). Мне нужно, чтобы общее количество ссылочных позиций было разделено на 4 строки. –

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