我遇到了Modern Tribe的“事件日历”插件没有正确分页的问题。它显示第一页正常,但拒绝转到任何辅助页面(使用wp-pagenavi)。理想情况下,我试图通过AJAX加载它,但在这一点上分页将是一个奇迹。我在这里度过了整整一天。基本上,这是查询:
<?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
?>
答案 0 :(得分:1)
你的循环存在很多问题:
你说你正在使用wp_page_navi,但我没有在你的任何代码中看到任何对该插件的引用。此外,您在循环中生成了列表项以及关闭的ul标记,但我没有看到任何打开的ul标记,这也可能导致您的一些问题。
我也在你的论点列表中注意到你试图将'eventDisplay'设置为'即将'。 'eventDisplay'不是有效的WP_Query参数。我猜你可能有一个注册的eventDisplay分类法?如果是这样,您将需要使用Tax Query。我在示例中删除了这个参数,但是当您习惯于设置所需的参数时,可以随意更换它。
最后,查询参数应在调用WP_Query时进行,而不是通过$ query-&gt;查询。
这是我使用标准Wordpress Paging和您在代码中拥有的参数提出的。我不熟悉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).'">«</a>';
echo '<a class="previous page button" href="'.get_pagenum_link(($curpage-1 > 0 ? $curpage-1 : 1)).'">‹</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)).'">›</a>';
echo '<a class="last page button" href="'.get_pagenum_link($query->max_num_pages).'">»</a>';
echo '</div>';
endif;
wp_reset_query();
?>
这将设置循环以在列表中显示5个帖子标题。下面是一系列基于你有多少帖子的编号链接。当您单击某个数字时,它会重新加载包含相应标题的页面。
如果有帮助,请告诉我。