我一直在撞墙试图解决这个问题,但似乎无法找到解决方案。我将偏移定义为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?>">← 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 →</a>
<?php endif; ?>
</div>
<div style="clear:both;"></div>
</div>
提前感谢任何人提供的任何帮助
答案 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 );