WordPress帖子中的分页

时间:2019-05-24 16:33:25

标签: php wordpress

已为我提供了此帖子模板,可以尝试对这些帖子进行分页,我将如何实现这一目标?很抱歉,如果我天真地询问/解决这个问题。

我尝试按照WordPress指南进行操作,但它们似乎与我所获得的不匹配,因此我很难进行推断。

希望这一切都有道理,非常感谢。

<?php $the_query = new WP_Query( 'posts_per_page=5' ); ?>
<?php $postLoops = 0 ?>

<?php while ($the_query -> have_posts()) : $the_query -> the_post(); ?>
<?php $postLoops++;
if ($postLoops == 2) {
    echo '<div class="post-right-half">';
}
if ($postLoops == 1) {
    echo '<div class="post-left-half">';
}

?>
<div class="post-square">
    <div class="post-thumbnail" style="background-image: url(<?php the_post_thumbnail_url(); ?>);"><br></div>
    <div class="content-half">
        <h2 class="post-title"><?php the_title(); ?></h2>
        <p class="post-content"><?php the_excerpt(__('(more…)')); ?</p>
        <a class="read-more" href="<?php the_permalink() ?>">Read More <i class="fa fa-angle-right" aria-hidden="true"></i></a>
    </div>
</div>

<?php
if ($postLoops == 3) {
    echo '</div>';
}
if ($postLoops == 1) {
    echo '</div>';
}
?>

<?php
endwhile;
wp_reset_postdata();
?>

2 个答案:

答案 0 :(得分:0)

您可以使用the_posts_pagination()显示分页链接。

这是一个模板标记,因此可以显示分页(无需echo结果)。

https://codex.wordpress.org/Function_Reference/the_posts_pagination

如果您希望先获得标记并在回显它之前对其进行处理,那么get_the_posts_pagination()是您的朋友。

https://codex.wordpress.org/Function_Reference/get_the_posts_pagination

答案 1 :(得分:0)

所以我不知道这有多普遍,但是结合注释的文档链接和进一步的研究,这是我得出的解决方案:

前两行变为:

<?php $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; ?>
<?php $the_query = new WP_Query( array('posts_per_page' => 12,'paged' => $paged) ); ?>
<?php $postLoops = 0 ?>

这有点复杂,但是我想它的核心是我必须将查询设置转换成一个数组,其中包括上面定义的分页变量(不确定我是否完全理解这一点,但是我正在工作就可以了。

然后,在页面底部希望显示链接的地方,我放入了一个疯狂的数组,我们对其进行了修改以适合我们的需要,它看起来很复杂,但实际上仅包括您可能需要的所有设置,包括将上一个和下一个按钮设置为真棒按钮:

<?php 
    echo paginate_links( array(
        'base'         => str_replace( 999999999, '%#%', esc_url( get_pagenum_link( 999999999 ) ) ),
        'total'        => $the_query->max_num_pages,
        'current'      => max( 1, get_query_var( 'paged' ) ),
        'format'       => '?paged=%#%',
        'show_all'     => false,
        'type'         => 'plain',
        'end_size'     => 2,
        'mid_size'     => 1,
        'prev_next'    => true,
        'prev_text'    => sprintf( '<i></i> %1$s', __( '<i class="fa fa-angle-left" aria-hidden="true"></i>', 'text-domain' ) ),
        'next_text'    => sprintf( '%1$s <i></i>', __( '<i class="fa fa-angle-right" aria-hidden="true"></i>', 'text-domain' ) ),
        'add_args'     => false,
        'add_fragment' => '',
    ) );
?>

我认为这就是一切,如果我对它有所了解,我将添加更多描述,但目前看来仍然有效。

非常感谢。