2012-05-15 4 views
0

У меня проблема с плагином «Календарь событий» современного племени, который не отображается с разбивкой по страницам. Он отображает первую страницу в порядке, но отказывается перейти на любые вторичные страницы (используя wp-pagenavi). В идеале, я пытаюсь загрузить его через AJAX, но в этот момент разбиение на страницы было бы чудом. Я исчерпал целый день здесь. В основном, это вопрос:Wordpress Плагин Events wp_query не разбивается на страницы

<?php 
$wp_query = new WP_Query(); 
$wp_query->query(array(
'post_type'=> 'tribe_events', 
'eventDisplay' => 'upcoming', 
'posts_per_page' => 5) 
); 
$max = $wp_query->max_num_pages; 
$paged = (get_query_var('paged') > 1) ? get_query_var('paged') : 1; 


if ($wp_query->have_posts()) : 
while ($wp_query->have_posts()) : 
    $wp_query->the_post(); 
    ?> 
    <li><!-- do stuff --> </li> 
    <?php 
endwhile;?> 
    </ul> 
<?php 
endif; 
wp_reset_query(); // important to reset the query 
?> 

ответ

1

Есть целый ряд проблем, с вашей петлей:

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

Я также замечаю в вашем списке аргументов, что вы пытаетесь установить 'eventDisplay' в 'comingcoming'. 'eventDisplay' не является допустимым параметром WP_Query. Я предполагаю, что у вас, вероятно, есть зарегистрированная таксономия eventDisplay? Если это так, вам нужно будет использовать Tax Query. Я удалил этот параметр в примере, но не стесняйтесь его заменять, когда вам удобно устанавливать параметры, которые вам нужны.

Наконец, аргументы запроса должны быть выполнены при вызове WP_Query, а не в запросе $ query->.

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

<?php 
global $paged; 
$curpage = $paged ? $paged : 1; 
$query = new WP_Query(array(
    'post_type'=> 'tribe_events', 
    'paged' => $paged, 
    'posts_per_page' => 5 
)); 

if ($query->have_posts()) : 
?> 
<ul> 
<?php while ($query->have_posts()) : $query->the_post(); ?> 
    <li><?php the_title(); ?></li> 
<?php endwhile; ?> 
</ul> 
<?php 
echo '<div id="wp_pagination">'; 
    echo '<a class="first page button" href="'.get_pagenum_link(1).'">&laquo;</a>'; 
    echo '<a class="previous page button" href="'.get_pagenum_link(($curpage-1 > 0 ? $curpage-1 : 1)).'">&lsaquo;</a>'; 
    for($i=1;$i<=$query->max_num_pages;$i++) 
    { 
     echo '<a class="'.($active = $i == $curpage ? 'active ' : '').'page button" href="'.get_pagenum_link($i).'">'.$i.'</a>'; 
    } 
    echo '<a class="next page button" href="'.get_pagenum_link(($curpage+1 <= $query->max_num_pages ? $curpage+1 : $query->max_num_pages)).'">&rsaquo;</a>'; 
    echo '<a class="last page button" href="'.get_pagenum_link($query->max_num_pages).'">&raquo;</a>'; 
echo '</div>'; 
endif; 
wp_reset_query(); 
?> 

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

Дайте мне знать, если это поможет.