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

时间:2016-03-18 22:54:19

标签: php wordpress

我在这里搜索了整个地方。我真的希望有一个很好的答案。

问题

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

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

不是:
这些不适合我在loop.php,loop-single.php或我实际想要访问它的文件中(我的主题中的blog-footer.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>

1 个答案:

答案 0 :(得分:0)

我通过以下功能检索了这些信息:

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

if ($page === 0)
    $page = 1;

如果您在页面上,则页面似乎返回0。

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