与WP_QUERY()`offset`属性一起使用时,分页不起作用

时间:2020-08-17 作者:pjk_ok

我有一个归档页面,可以使用WP_Query(). 在该网站的主页上,它显示了16个自定义帖子类型的帖子,因此在存档中,我将存档页面偏移了16个帖子。

其代码为:

$newsArticles = new WP_Query(array(
    \'posts_per_page\' => 16,
    \'offset\' => 16,
    \'post_type\'=> \'news\'
));

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

        // HTML

<?php } ?>
但是,在此存档页面上<?php echo paginate_links();?> 显示分页页面的函数不起作用。当我点击页码或使用下一个和上一个箭头时,它只是在每页上显示相同的帖子。

我使用的分页代码是:

<p>
    <?php echo paginate_links(array(
        \'prev_text\' => \'NEWER\',
        \'next_text\' => \'OLDER\',
    ));?>
</p>
有人知道我是如何使用分页的吗WP_Query() 所有物offset 那么归档分页的行为与普通归档页面(带分页)类似吗?

2 个回复
SO网友:Awais

WP\\U查询docs 提供有关偏移参数的警告:设置偏移参数将覆盖/忽略分页参数并中断分页

尝试以下操作:

 $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
    $newsArticles = new WP_Query(array(
        \'posts_per_page\' => 16,
        \'post_type\'=> \'news\',
        \'paged\' => $paged,
    ));
while(  $newsArticles->have_posts()){
        $newsArticles->the_post(); ?>

        // HTML

<?php } ?>


$big = 999999999; // need an unlikely integer
echo paginate_links( array(
    \'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
    \'format\' => \'?paged=%#%\',
    \'current\' => max( 1, get_query_var(\'paged\') ),
    \'total\' => $newsArticles->max_num_pages
) );
查看paginate\\u链接的更多示例here:

SO网友:Dev

我会用这样的东西:

$prev_link = get_previous_posts_link( \'&#x000AB; \' . __( \'Previous Page\' ) );
$next_link = get_next_posts_link( __( \'Next Page\' ) . \' &#x000BB;\' );

if ( $prev_link || $next_link ) {

$pagination  = $prev_link ? sprintf( \'<div class="pagination-previous alignleft">%s</div>\', $prev_link ) : \'\';
$pagination .= $next_link ? sprintf( \'<div class="pagination-next alignright">%s</div>\', $next_link ) : \'\';

echo $pagination:

}

你可以使用the_posts_pagination()

相关推荐

WP Cron jobs loops infinitely

我正在编写一个脚本来添加一个命名的Cron作业,该作业可以更新单个用户,大约每5分钟运行一次。我的问题是,每隔一秒钟左右,每个用户都会反复运行作业。下面是我在函数中放置的代码。php文件。这是我第一次使用WordPress尝试WP Cron功能,我想知道我是否正确设置了作业。function so_custom_cron_schedule( $schedules ) { $schedules[\'every_5_minutes\'] = array( \'inter