WordPress主题获取当前页面和页数


Wordpress theme get the current page and number of Pages

我到处在网上搜索这个。 我真的希望有一个好的答案。

问题

我想要什么:
我想要一种方法来获取当前博客页面索引和页脚类型文件中的最大页数。(所以我可以用页码制作一个导航栏)

什么应该有效:
根据wordpress,在循环内部应该有$page和$numpages全局变量。

它不是:
这些在循环.php、循环单曲中对我不起作用.php或者在我实际上想要访问它的文件中(博客页脚.php在我的主题中)。 在循环时在我的has_posts内外进行了测试。

使用答案代码的解决方案

注意:我有答案,我提出这个问题是为了分享它。 我认为可能有更好的答案或解释为什么$page和$numpages不起作用,所以如果你知道,请发布你的答案!

如果您有兴趣,我编写了一些代码来创建分页导航栏
这就是我想要当前/最大页面的目的。 这是功能版本

你可能想设计 ul elemetns 的样式

<ul class="pagination">
    <?php
        $DOTS = -1;
        $CURRENT = -2;
        $pages = $wp_query->max_num_pages;
        $page = get_query_var('paged', 1);
        if ($page === 0)
            $page = 1;
        $links = [];
        if ($page !== 1) {
            ?>
            <li><?php previous_posts_link( __( '&laquo;') ); ?></li>
            <?php
        }
        if ($page > 3) {
            $links[] = 1;
            if ($page > 4)
                $links[] = $DOTS;
        }
        for ($i = $page-2; $i <= ($page + 2); $i++) {
            if ($i <= 0)
                continue;
            else if ($i > $pages)
                break;
            else if ($page === $i)
                $links[] = $CURRENT;
            else
                $links[] = $i;
        }
        if ($pages-2 > $page) {
            if ($pages-3 > $page)
                $links[] = $DOTS;
            $links[] = $pages;
        }
        foreach($links as $link) {
            if ($link === $DOTS)
                echo '<li><a>...</a></li>';
            else if ($link === $CURRENT)
                echo "<li><a class='"currently-open highlight'">$page</a></li>";
            else
            echo "<li><a href='"/blog/page/$link'">$link</a><li>";
        }
        if ($page != $pages) {
            ?>
                <li><?php next_posts_link( __( '&raquo;') ); ?></li>
            <?php
        }
    ?>
</ul>

我通过以下函数检索了此信息:

$pages = $wp_query->max_num_pages;
$page = get_query_var('paged', 1);
if ($page === 0)
    $page = 1;

如果您在第一页上,则分页似乎返回 0。

注意:我认为可能有更好的答案或解释为什么$page和$numpages不起作用,所以如果你知道,请发布你的答案!