我有一个自定义页面,列出了所有帖子,不管是哪个类别,我都用分页打砖墙了!出于某种原因,分页没有出现!
这是我的代码
<?php // Template Name: News Feed ?>
<?php get_header(); ?>
<div id="content">
<div class="container">
<div class="row">
<div class="col-md-3">
<div id="left-sidebar">
<?php get_sidebar('posts') ?>
</div>
</div>
<div class="col-md-6">
<?php
$args = array(
'post_type' => 'post',
'orderby' => 'date',
'order' => 'DESC',
);
$my_query = new WP_Query($args);
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<div class="post">
<h2><a href="<?php the_permalink(); ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<small><?php the_time('F jS, Y'); ?> by <?php the_author_posts_link(); ?></small>
<div class="entry">
<?php the_excerpt(); ?>
</div>
<p class="postmetadata"><?php _e( 'Posted in' ); ?> <?php the_category( ', ' ); ?></p>
</div>
<?php endwhile; ?>
<div class="navigation">
<div class="alignleft"><?php previous_posts_link('Previous Entries'); ?></div>
<div class="alignright"><?php next_posts_link('Next Entries'); ?></div>
</div>
</div>
<div class="col-md-3">
<?php get_sidebar(); ?>
</div>
</div>
</div>
</div>
<?php get_footer(); ?>
答案 0 :(得分:1)
您的链接不会显示,因为默认情况下next_posts_link()
设置为主查询($max_num_pages
)的$wp_query->max_num_pages
参数。在页面上,这将始终为1
,默认情况下,当只有一个页面时,这些链接不会显示
此外,您没有对查询进行分页,因此即使您的链接工作正常,您也会看到相同的帖子被重复。
您应该将paged
参数添加到您的查询中,如下所示
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$args = array(
'paged' => $paged,
// Rest of you arguments
);
然后你需要改变$max_pages
这样的next_posts_link()
参数
next_posts_link( 'Next entries', $my_query->max_num_pages );
答案 1 :(得分:1)
首先尝试将'posts_per_page'参数添加到$ args中,这样循环就会知道要在页面中显示多少帖子。
其次,来自WordPress Codex:
如果在静态首页上分页,您必须以这种方式添加“paged”&gt;参数:
<?php
if ( get_query_var('paged') ) { $paged = get_query_var('paged'); }
elseif ( get_query_var('page') ) { $paged = get_query_var('page'); }
else { $paged = 1; }
query_posts('posts_per_page=3&paged=' . $paged);
?>
这意味着只需在你的args之前添加这段代码(不带“query_posts”),然后就像这样的args:
$args = array(
'post_type' => 'post',
'paged' => $paged,
'orderby' => 'date',
'order' => 'DESC',
我建议再次探索一下,也许有些东西可以帮助你。 http://codex.wordpress.org/Pagination#Example_Loop_with_Pagination
答案 2 :(得分:0)
您已创建自定义模板,因此您应首先尝试使用以下链接: https://wordpress.org/support/topic/pagination-not-working-on-custom-template-1
另外,我要求您完成此link并详细解释所有内容
默认情况下,在任何给定的上下文中,WordPress使用主查询来确定分页。主查询对象存储在$ wp_query全局中,该全局也用于输出主查询循环:
if ( have_posts() ) : while ( have_posts() ) : the_post();
使用自定义查询时,可以创建一个完全独立的查询对象:
$custom_query = new WP_Query( $custom_query_args );
该查询通过完全独立的循环输出:
if ( $custom_query->have_posts() ) :
while ( $custom_query->have_posts() ) :
$custom_query->the_post();
但是分页模板标签,包括previous_posts_link(),next_posts_link(),posts_nav_link()和paginate_links(),它们的输出基于主查询对象$ wp_query。该主查询可能是也可能不是分页的。例如,如果当前上下文是自定义页面模板,则主$ wp_query对象将仅包含一个帖子 - 即自定义页面模板所分配到的页面的ID。
如果当前上下文是某种归档索引,则主$ wp_query可能包含足够的帖子以导致分页,这导致问题的下一部分:对于主$ wp_query对象,WordPress将传递分页查询的参数,基于分页的URL查询变量。获取查询时,将使用该分页参数来确定要返回的分页帖子集。如果单击显示的分页链接并加载下一页,则您的自定义查询将无法知道分页已更改。
https://wordpress.stackexchange.com/questions/120407/how-to-fix-pagination-for-custom-loops
我希望这对你有用
答案 3 :(得分:0)
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1; // setup pagination
$the_query = new WP_Query( array(
'post_type' => 'post',
'paged' => $paged,
'posts_per_page' => 5)
);
while ( $the_query->have_posts() ) : $the_query->the_post();
echo '<div>' . get_the_title() . '</div>';
the_content();
endwhile;
echo '<nav>';
echo '<div>'.get_next_posts_link('Older', $the_query->max_num_pages).'</div>'; //Older Link using max_num_pages
echo '<div>'.get_previous_posts_link('Newer', $the_query->max_num_pages).'</div>'; //Newer Link using max_num_pages
echo "</nav>";
wp_reset_postdata(); // Rest Data
请您尝试上面的代码吗?