自定义 wp_query 上的 Wordpress 分页(next_posts_link)未显示
Posted
技术标签:
【中文标题】自定义 wp_query 上的 Wordpress 分页(next_posts_link)未显示【英文标题】:Wordpress pagination (next_posts_link) on custom wp_query not showing 【发布时间】:2012-12-31 03:08:17 【问题描述】:有人问过类似的问题,但我不知道我错过了什么!
我有一个用于自定义类型字段的静态页面,类似于常规存档或类别页面,但我无法使分页正常工作。 如果我手动转到第 2 页(即添加到链接 .../page/2)我会得到“较新的帖子”链接,但在第一页上不是对于老年人! next_posts_link() 似乎不存在(没有注入 div 或任何东西)
这是我的代码:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$query_args = array (
'post_type' => 'bb_articoli',
'meta_key' => 'bb_data-pubblicazione',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'posts_per_page' => 2, //for testing purposes
'paged' => $paged,
'meta_query' => array(
array('key' => 'bb_fonte-pubblicazione',
'value' => 2,
'compare' => '='
)
)
);
$query = new WP_Query($query_args);
if ( $query->have_posts() ) :
while ( $query->have_posts()) :
$query->the_post();
get_template_part( 'content' , get_post_format());
endwhile;
next_posts_link();
previous_posts_link();
else :
get_template_part( 'content', 'none' );
endif;
非常感谢任何帮助。谢谢 乙
仅供参考:在 22 日使用子主题
【问题讨论】:
【参考方案1】:您的解决方案有效的原因是您覆盖了全局 $wp_query 变量。更好的解决方案是将 $query->max_num_pages 添加到 next_posts_link()。
next_posts_link('« Older Entries', $query->max_num_pages)
其中 $query 是您新创建的对象的名称。这样您就可以保留 $wp_query。
【讨论】:
这是我的解决方案。【参考方案2】:好的,想通了,分享给大家参考:
由于某些未知原因,next_posts_link() 和 previous_posts_link() 仅在查询对象被称为 $wp_query
! 时才能正常工作!
因此,相应地更改您的查询对象可以使整个工作正常:
$wp_query = new WP_Query($query_args);
if ( $wp_query->have_posts() ) :
while ( $wp_query->have_posts()) :
$wp_query->the_post();
// do something
endwhile;
next_posts_link();
previous_posts_link();
对我有用,但我没有彻底测试过。据我所知,这在任何地方都没有记录,当然也没有在法典中。找到答案here in comment 4 by madhavaji。
干杯
【讨论】:
另见关于 WordPress 答案的讨论,它提供了一种更温和的方式来临时替换 $wp_query:wordpress.stackexchange.com/questions/77661/…【参考方案3】:我有同样的问题。我尝试了所有解决方案,但没有一个对我有帮助。
所以对于那些无法用上面的解决方案解决这个问题的人,我已经做了:
<?php
global $wp_query, $paged;
if( get_query_var('paged') )
$paged = get_query_var('paged');
else if ( get_query_var('page') )
$paged = get_query_var('page');
else
$paged = 1;
$wp_query = null;
$args = array(
'post_type' => array("fashion", "tv", "sport"),
'orderby'=>'date',
'order'=>'DESC',
'posts_per_page' => 5,
'paged' => $paged
);
$wp_query = new WP_Query();
$wp_query->query( $args );
while ($wp_query->have_posts()) : $wp_query->the_post();
/* YOUR CONTENT HERE */
endwhile;
next_posts_link('next');
previous_posts_link('previous');
wp_reset_query();
?>
重要事情是用全局变量开始你的代码,因为next_posts_link()
和previous_posts_link()
函数正在读取global $paged
和$wp_query
值。
希望能帮到你!
【讨论】:
以上是关于自定义 wp_query 上的 Wordpress 分页(next_posts_link)未显示的主要内容,如果未能解决你的问题,请参考以下文章
WordPress 中自定义 wp_query 的分页需要 404 错误页面
php Wordpress Bootstrap 4.1分页(使用自定义WP_Query()和全局$ wp_query支持)
php Wordpress Bootstrap 4.1分页(使用自定义WP_Query()和全局$ wp_query支持)