破碎的分页

时间:2014-09-01 05:46:09

标签: php wordpress pagination

我一直在撞墙试图解决这个问题,但似乎无法找到解决方案。我将偏移定义为0,但在我的分页链接偏移+ 1对于较旧的帖子只会导致错误页面。不确定我哪里出错了。任何帮助将不胜感激。

以下是我的page.php文件中的所有代码......

<?php

$offset = $_GET['offset'] ? $_GET['offset'] : 0;

$page_title = $wp_query->post->post_title;
$total_posts = wp_count_posts()->publish;

if ( $page_title == "Blog" ) {

?>
<div id="blog_content">
<?php
    if($_GET['message']){
        echo "<div style='background-color:#d9ffd1; padding:10px; margin-bottom:20px;'>".stripslashes($_GET["message"])."</div>";
    }
?>

<?php
    $post_count = 0;

    $args = array( 'numberposts' => 10, 'post_status' => "publish", "offset"=>$offset*10);
    $myposts = get_posts( $args );
    foreach( $myposts as $post ) :  setup_postdata($post); $post_count++; ?>

然后我的分页链接

<div style="font-size:12px;">
        <div style="float:left; width:49%;">
        <?php
        the_post();

            if ($offset > 0): ?>
        <a href="<?php the_permalink()?>&offset=<?=$offset-1?>">&larr; Newer Posts</a>
        <?php endif; ?>
        </div>
        <div style="float:right; width:49%; text-align: right;">
        <?php
        $next_post = get_next_post();
        if ($total_posts > $post_count + ($offset*10)): ?>
        <a href="<?php the_permalink()?>&offset=<?=$offset+1?>">Older Posts &rarr;</a>
        <?php endif; ?>
        </div>
        <div style="clear:both;"></div>
    </div>

提前感谢任何人提供的任何帮助

1 个答案:

答案 0 :(得分:1)

关于你想要达到的目标并不完全清楚,但我认为你想密切关注http://codex.wordpress.org/Making_Custom_Queries_using_Offset_and_Pagination

  

在查询中指定硬编码偏移量可以并将打破分页   因为WordPress在内部使用偏移来计算和处理   分页。

     

要解决此限制,您需要另外写一些   代码手动处理分页;你需要检测一个循环   有额外的页面,然后动态计算适当的   当前页面的偏移量。

用于控制自定义分页的代码将全部发生在functions.php文件中,而不是在模板page.php中。您可以设置初始偏移量,以及重新定义每页的帖子数。上面的codex链接上显示了特定的样本。

您将在运行查询之前通过

添加操作
   add_action('pre_get_posts', 'myprefix_query_offset', 1 );

,您必须通过

考虑自定义
   add_filter('found_posts', 'myprefix_adjust_offset_pagination', 1, 2 );