因此,我一直在开发自己的主题作为一种学习体验,对于如何让分页工作起来,我感到困惑。在谈到这一点并提出问题之前,我已经尝试了好几件事,我只是似乎错过了一些东西。
这是在一个“静态Frontpage”上,这就是为什么$paged至少称为“page”,这是我的研究揭示的一件事。
<?php while ( have_posts() ) : the_post(); ?>
<h2>Recent Posts</h2>
<?php
$paged = (get_query_var(\'page\')) ? get_query_var(\'page\') : 1;
$Post = array(
\'post_type\' => \'post\',
\'posts_per_page\' => 4,
\'orderby\' => \'modified\',
\'order\' => \'DESC\',
\'paged\' => $paged
);
$q = new WP_Query( $Post );
?>
<div class="grid row posts">
<?php while ( $q->have_posts() ) : $q->the_post(); ?>
<div class="col">
<div class="date-container">
<p class="post-date bg-darkpurple">
<?php
//echo get_the_date()
$u_time = get_the_time(\'U\');
$u_modified_time = get_the_modified_time(\'U\');
if ($u_modified_time >= $u_time + 86400) {
echo "Last updated ";
the_modified_time(\'F jS, Y\');
echo ""; }
else {echo "Posted "; the_time(\'F jS, Y\');}
?>
</p>
</div>
<?php
$perma_cat = get_post_meta($post->ID , \'_category_permalink\', true);
if ( $perma_cat != null ) {
$cat_id = $perma_cat[\'category\'];
$category = get_category($cat_id);
} else {
$categories = get_the_category();
$category = $categories[0];
}
$category_link = get_category_link($category);
$category_name = $category->name;
?>
<picture class="post-thumb block">
<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(\'medium\'); ?></a>
<div class="cat-container">
<a class="post-cat bg-darkpurple" href="<?php echo $category_link ?>"><?php echo $category_name ?></a>
</div>
</picture>
<h3>
<a href="<?php the_permalink(); ?>">
<?php the_title(); ?>
</a>
</h3>
<?php echo \'<p class="excerpt">\' . get_the_excerpt(). \'</p>\'; ?>
</div>
<?php endwhile; ?>
</div>
<div class="pagination">
<?php
echo paginate_links( array(
\'base\' => str_replace( 999999999, \'%#%\', esc_url( get_pagenum_link( 999999999 ) ) ),
\'total\' => $query->max_num_pages,
\'current\' => max( 1, get_query_var( \'page\' ) ),
\'format\' => \'?page=%#%\',
\'show_all\' => false,
\'type\' => \'plain\',
\'end_size\' => 2,
\'mid_size\' => 1,
\'prev_next\' => true,
\'prev_text\' => sprintf( \'<i></i> %1$s\', __( \'Newer Posts\', \'text-domain\' ) ),
\'next_text\' => sprintf( \'%1$s <i></i>\', __( \'Older Posts\', \'text-domain\' ) ),
\'add_args\' => false,
\'add_fragment\' => \'\',
) );
?>
</div>
<?php wp_reset_postdata(); ?>
<?php endwhile; ?>
感谢您提供的任何见解
最合适的回答,由SO网友:Jacob Peattie 整理而成
如果设置为静态首页,为什么要分页?
将帖子分页网格作为首页的正确方法是将主页设置为“您的最新帖子”。然后,您将开发front-page.php
, home.php
或index.php
将帖子显示为网格的模板(使用Template Hierarchy 以确定所需的文件)。
在该模板中,您不需要使用WP_Query
或$paged
或诸如此类的事情。仅主回路:
<h2>Recent Posts</h2>
<div class="grid row posts">
<?php while ( have_posts() ) : the_post(); ?>
<div class="col">
<!-- Post markup goes here. -->
</div>
<?php endwhile; ?>
</div>
<div class="pagination">
<?php
echo paginate_links( array(
\'end_size\' => 2,
\'mid_size\' => 1,
\'prev_text\' => sprintf( \'<i></i> %1$s\', __( \'Newer Posts\', \'text-domain\' ) ),
\'next_text\' => sprintf( \'%1$s <i></i>\', __( \'Older Posts\', \'text-domain\' ) ),
) );
?>
</div>
请注意我所做的其他更改:
分页链接应位于while
循环我删除了参数paginate_links()
因为它们要么由于正确的循环结构而不必要,要么因为它们只是设置为默认值如果你能在评论中幽默我的话WP_Query
分页是我在这个网站上看到的最常见的错误,所以我很好奇你是从哪里想到你需要做一个new WP_Query
, 因为在任何标准模板中,帖子的主列表都不需要这样做,但我几乎每天都看到这样做。有没有一个教程在那里传播这一点,或者在官方文件中有暗示这一点的东西?