2016-01-30 1 views
1

Использование пользовательского WordPress цикла:дисплей html.Div после п-го поста в цикле Wordpress

<?php if (have_posts()) : while (have_posts()) : the_post(); ?> 
//Post Content 
<?php endwhile;?> 
//Pagination 
<?php else : ?> 
//No posts message 
<?php endif; ?> 

Мне нужна помощь реструктурировать код для отображения HTML Div.block после 4-го поста каждой страницы при условии, что страница в не более 6 сообщений для отображения.

ответ

0

Я определил $postnum до моего проходного каждого результата, так что первоначальное значение $postnum может быть увеличен каждым итерация.

<?php 
$postnum = 0; // Set counter to 0 outside the loop 
if (have_posts()) : while (have_posts()) : the_post(); 
?> 
    //Post Content 
<?php $postnum++; // Increment counter 
if ($postnum == 4){ ?> 
    //Div.block 
<?php } ?> 
<?php endwhile;?> 
    //Pagination 
<?php else : ?> 
    //No posts message 
<?php endif; ?> 

Таким образом, я смог отобразить один Div.block html после 4-го сообщения на каждой странице в цикле.

0

WordPress использует объект WPQuery в Loop, а в объекте у вас есть две переменные, которые вы можете использовать для определения количества сообщений, которые будут отображаться на странице. Переменные: $wp_query->post_count; и $wp_query->found_posts;, если вы объявите $ wp_query следующим образом: $wp_query = new WP_Query($args);.

Теперь я добавлю немного счетчика в цикле, и это будет так:

<?php 
$size = $wp_query->post_count; 
$counter = 0; 
if (have_posts()) : while (have_posts()) : the_post(); ?> 
//Post Content 
    if ($size >= 6 && $counter == 3) { 
     //show your div here 
    } 

    $counter++; 
<?php endwhile;?> 
    //Pagination 
<?php else : ?> 
    //No posts message 
<?php endif; ?> 
Смежные вопросы