我有一个WordPress网站,上面有很多帖子,都是分类的。我设置了一个新的主题,分页(每页15个帖子),因此用户可以遍历每个页面。一些类别分页很好。其他人错过了最后一页。
所以,如果一个类别有66个帖子......前4页显示15个不同的帖子。但是,当我点击查看第5页时,该页面显示“找不到帖子”。最后6个帖子去了哪里?它们仍出现在我的管理中(已发布且可见)。但是,其他类别页面没有此问题 - 例如,我有一个包含42个帖子的类别,它有3个页面...其最后一页有12个最终帖子。
因此,分页似乎工作正常(因为它清楚地显示了正确的页数,对于帖子的数量)。请看下面我的代码...这是我的模板化index.php页面中的代码(我没有设置category.php页面,因为它列出的主页与主页非常相似)。
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; // Page
$args = "posts_per_page=15&paged=".$paged; // Base query
$category = get_queried_object(); // Get Cat info
$thisCat = $category->term_id; // Get Cat ID (if exists)
$tagID = get_queried_object()->term_id; // Get Tag ID (if exists)
echo '<!-- paged: '.$paged.'-->';
echo '<!-- catID: '.$thisCat.'-->';
echo '<!-- tagID: '.$tagID.'-->';
if (is_home() || is_front_page()) { // HOMEPAGE
query_posts($args.'&orderby=rand');
echo '<!-- args: '.$args.'&orderby=rand'.'-->';
} elseif ( is_search() ) { // SEARCH RESULTS ?>
<?php
$search_query = get_search_query();
query_posts($args.'&s='.$search_query);
echo "<!-- args: ".$args.'&s='.$search_query."-->"; ?>
<h1>Search</h1>
<div class="content_labels">
<div class="content_label">SEARCH RESULTS FOR: <?php echo $s; ?></div>
</div>
<div class="clear" style="margin:0 0 10px 0;"></div>
<div class="previouspage">
<a href="javascript:history.back()"><< Previous Page</a>
</div><?php
} elseif( is_category() ) { // CATEGORY
query_posts($args.'&cat='.$thisCat);
echo '<!-- args: '.$args.'&cat='.$thisCat.'-->'; ?>
<div class="content_labels">
<div class="content_label">Category:</div>
</div>
<h1><?php single_cat_title( '', true ); ?></h1>
<div class="clear" style="margin:0 0 10px 0;"></div>
<div class="previouspage">
<a href="javascript:history.back()"><< Previous Page</a>
</div><?php
} elseif( is_tag()) { // TAGS
echo '<!-- args: '.$args.'&tag_id='.$tagID.'-->';
query_posts($args.'&tag_id='.$tagID); ?>
<div class="content_labels">
<div class="content_label">Tag:</div>
</div>
<h1><?php single_tag_title(); ?> </h1>
<div class="clear" style="margin:0 0 10px 0;"></div>
<div class="previouspage">
<a href="javascript:history.back()">Previous Page</a>
</div><?php
}
if ( have_posts() ) :
$i=1;
while ( have_posts() ) : the_post(); ?>
// PAGE CODE GOES HERE
endwhile; ?>
<?php base_pagination(); // PAGINATION CODE ?>
<?php endif; ?>
以下是我的functions.php中的分页代码......我不认为这是问题......
function base_pagination() {
global $wp_query;
$big = 999999999; // This needs to be an unlikely integer
// For more options and info view the docs for paginate_links()
// http://codex.wordpress.org/Function_Reference/paginate_links
$paginate_links = paginate_links( array(
'base' => str_replace( $big, '%#%', get_pagenum_link($big) ),
'current' => max( 1, get_query_var('paged') ),
'total' => $wp_query->max_num_pages,
'mid_size' => 5
) );
// Display the pagination if more than one page is found
if ( $paginate_links ) {
echo '<div class="pagination">';
echo $paginate_links;
echo '</div><!--// end .pagination -->';
}
}
任何人都可以看到出了什么问题吗?我已经玩了几个小时,我似乎无法找到解决方案......
答案 0 :(得分:2)
所以,我做了一些挖掘,尝试了一些事情......我发现上面的代码没有任何问题。查询是正确的(每页显示15个,每个类别存档页面等),并且分页正在运行...最后,默认的POSTS PER PAGE与我自己的posts_per_page = 15查询冲突。不确定这场冲突发生在哪里(这超出了我的技能) - 但我确实学会了如何阻止它。
在设置下 - 阅读...... 我刚刚将“博客页面最多显示”更改为“15”
这不是一个理想的修复程序(因为我不知道这个问题从哪里开始,如果它与15不同,我无法调整自定义“posts_per_page”...)但我的网站现在可以按照我想要的方式工作。