上周我想用它的所有子类别替换第一类别中的帖子。到目前为止,除了分页之外,它运行良好。我的意思是:
当我单击“下一步”时,页面将重新加载,并且 URL 更改为 /page/2,但它显示的子类别范围与以前相同。无论我点击多少次“下一步”,它都会重新加载页面,但内容和 URL 都是相同的。如果我单击“上一页”,列表将更改为最后 5 个子类别,即照片中所示的第 13 页,但它显示第 13 页(无编号)。换句话说,当前分页代码中没有任何内容可以正常工作。
我确信有更好的方法,类似于帖子分页,每个页面都有链接,而不仅仅是上一页和下一页,但到目前为止我尝试过的方法都没有效果。任何有助于分页工作的帮助都将受到赞赏。多谢!这是它的样子:
<?php
$descendant= array('child_of'=>1);
$cats = get_categories($descendant);
$limit = 5;
$total = count($cats);
$pages = ceil($total / $limit);
$result = ceil($total / $limit);
$current = isset($_GET['paged']) ? $_GET['paged'] : 1;
$next = $current < $pages ? $current + 1 : null;
$previous = $current > 1 ? $current - 1 : null;
$offset = ($current - 1) * $limit;
$cats = array_slice($cats, $offset, $limit);
?>
<div class="container">
<?php foreach ($cats as $cat) { ?>
<div>
<a href="<?php echo esc_url( get_category_link( $cat->term_id ) ); ?>"><?php echo $cat->name; ?></a>
<?php $query = $cat->count; ?>
<?php if ($query == 1) $query .= " Post"; else $query .=" Posts"; echo '('.$query.')'; //Posts Count ?>
</div>
<?php } ?>
<br>
<?php echo "<p>(Page: ". $current . " of " . $result .")</p>"; ?>
<br>
<? if($previous): ?>
<a href="<?php home_url(); ?>?paged=<?= $previous ?>">Previous</a>
<? endif ?>
<? if($next) : ?>
<a href="<?php home_url(); ?>?paged=<?= $next ?>">Next</a>
<? endif ?>
</div>
您创建的链接末尾有
?paged=...
,但最终却是 /page/2
- 所以显然这与默认的 WP 分页机制“重叠”。使用不同的参数名称,应该能够解决这个问题。
<? if($previous): ?>
<a href="<?php home_url(); ?>?paged=<?= $previous ?>">Previous</a>
<? endif ?>
即使
$previous
为空,也会生成链接 - 因为 <? if($previous): ?>
和 <? endif ?>
已被 PHP 解析器忽略,因为 short_open_tags
如果设置为关闭。使用 <?php
而不是 <?
开始每个 PHP 块,那么这也应该有效。