最后的帖子没有显示在wordpress网站的最后一个类别页面上

时间:2014-09-26 20:30:45

标签: wordpress pagination

我有一个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 -->';
    }
}

任何人都可以看到出了什么问题吗?我已经玩了几个小时,我似乎无法找到解决方案......

1 个答案:

答案 0 :(得分:2)

所以,我做了一些挖掘,尝试了一些事情......我发现上面的代码没有任何问题。查询是正确的(每页显示15个,每个类别存档页面等),并且分页正在运行...最后,默认的POSTS PER PAGE与我自己的posts_per_page = 15查询冲突。不确定这场冲突发生在哪里(这超出了我的技能) - 但我确实学会了如何阻止它。

在设置下 - 阅读...... 我刚刚将“博客页面最多显示”更改为“15”

这不是一个理想的修复程序(因为我不知道这个问题从哪里开始,如果它与15不同,我无法调整自定义“posts_per_page”...)但我的网站现在可以按照我想要的方式工作。