Wordpress自定义帖子类型存档页面wp_query分页无法正常工作

时间:2014-07-19 13:28:14

标签: wordpress pagination custom-post-type wp-query

我为我的'Event'自定义帖子ape创建了一个名为archive-event.php的存档页面。 我使用了标准archive.php模板中的内容,并按照发布的顺序列出了我的4个事件。

下一步是通过自定义字段event_date更改顺序。我这样做没有问题。然后我想不显示event_date已经传递的任何事件。以下代码完美地完成了这一点。

我现在遇到的问题是我的分页搞砸了。我的默认阅读设置设置为每页2个帖子,我有一个“加载更多”按钮以显示下两个。

当我点击“加载更多”时,它会重复显示已经显示的两个事件。我出错的任何想法?

<?php 
$today = date("Ymd");
$args = array (
    'post_type'      => 'event',
    'meta_key'       => 'event_date',
    'orderby'        => 'meta_value', 
    'order'          => 'ASC',
    'meta_query'     => array(
                            array(
                                'key' => 'event_date',
                                'value' => $today,
                                'type' => 'numeric',
                                'compare' => '>=',
                                )
                            ),
                        );
$wp_query = new WP_Query( $args );

while( $wp_query->have_posts() )
{
$wp_query->the_post(); 
?>

         <div>Content goes here</div>


<?php } wp_reset_postdata(); ?>

1 个答案:

答案 0 :(得分:3)

根据插件构建UI的方式,它可能会或可能不会尊重WordPress中内置的pagination功能。

尝试将paged设置强制转换为您的查询,如下所示:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array (
    'post_type'      => 'event',
    'paged'          => $paged, // this will be set to what WordPress thinks is the proper page to start
    'meta_key'       => 'event_date',
    'orderby'        => 'meta_value', 
    'order'          => 'ASC',
    'meta_query'     => array(
                            array(
                                'key' => 'event_date',
                                'value' => $today,
                                'type' => 'numeric',
                                'compare' => '>=',
                                )
                            ),
                        );

接下来,如果这仍然不起作用,您可以通过更改默认paged值来测试paged参数由于某种原因不起作用的假设(再次,只是为了试验):

$paged = 2; // just force it to start on the second page to see if that works

如果上述测试有效,我会说get_query_var()认为你在第一页。