我为我的'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(); ?>
答案 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()
认为你在第一页。