【问题标题】:Wordpress custom post type archive page wp_query pagination not workingWordpress 自定义帖子类型存档页面 wp_query 分页不起作用
【发布时间】:2014-07-19 13:28:14
【问题描述】:

我为我的“事件”自定义帖子猿创建了一个存档页面,名为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(); ?>

【问题讨论】:

  • 您的加载更多按钮是在进行 ajax 调用,还是在使用 next_posts_link()posts_nav_link() 或其他方法?
  • 这是一个ajax调用。我禁用了插件并返回到基本的下一个/以后的分页,我仍然遇到同样的问题,所以假设它与插件无关。即使我点击以前的帖子,它也会循环当前的 2...

标签: pagination custom-post-type wordpress


【解决方案1】:

根据插件构建 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() 相信你在第一页。

【讨论】:

  • 在我们的关系中宣布我对你的爱是否为时过早?第一个建议奏效了。我知道通过使用 wp_query 它忽略了其他默认值,但不知道它是什么。非常感谢
  • @user2272355 哈,可能有点早了,是的。玩得开心!
  • 出于某种原因,get_query_var('paged') 在自定义页面上,但get_query_var('page') 如果您在首页上使用它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-14
  • 2013-06-02
相关资源
最近更新 更多