每个分页的 WordPress 类别?

问题描述 投票:0回答:1

上周我想用它的所有子类别替换第一类别中的帖子。到目前为止,除了分页之外,它运行良好。我的意思是:

当我单击“下一步”时,页面将重新加载,并且 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>
php wordpress pagination
1个回答
0
投票

您创建的链接末尾有

?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 块,那么这也应该有效。

© www.soinside.com 2019 - 2024. All rights reserved.