Get the Current Page Number

时间:2011-03-18 作者:Robin I Knight

在每页有20篇帖子的情况下。我想得到当前的页码,以便在底部制作一些漂亮的页面链接。如何获取当前页面。我试过这个

<?php echo \'(Page \'.$page.\' of \'.$numpages.\')\'; ?>
每一页上都写着第1页,共1页。

任何想法,

非凡的

5 个回复
最合适的回答,由SO网友:EAMann 整理而成

WordPress使用这样的分页时,有一个查询变量$paged 它的按键。所以第1页是$paged=1 第15页是$paged=15.

可以使用以下代码获取此变量的值:

$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
获取总页数有点棘手。首先,您必须统计数据库中的所有帖子。然后筛选发布帖子的依据(相对于草稿、计划、垃圾等)<然后,您必须将此计数除以您希望在每页上显示的帖子数:

$total_post_count = wp_count_posts();
$published_post_count = $total_post_count->publish;
$total_pages = ceil( $published_post_count / $posts_per_page );
我还没有测试过,但你可能需要$posts_per_page 和你拿的一样$paged (使用get_query_var()).

SO网友:t31os

您可以用一行代码来完成这项工作,但同样,您可能希望在其他地方添加代码,因此函数通常更有用。

function current_paged( $var = \'\' ) {
    if( empty( $var ) ) {
        global $wp_query;
        if( !isset( $wp_query->max_num_pages ) )
            return;
        $pages = $wp_query->max_num_pages;
    }
    else {
        global $$var;
            if( !is_a( $$var, \'WP_Query\' ) )
                return;
        if( !isset( $$var->max_num_pages ) || !isset( $$var ) )
            return;
        $pages = absint( $$var->max_num_pages );
    }
    if( $pages < 1 )
        return;
    $page = get_query_var( \'paged\' ) ? get_query_var( \'paged\' ) : 1;
    echo \'Page \' . $page . \' of \' . $pages;
}
NOTE: 代码可以进入函数文件。

只需调用要显示“第x页,共y页”消息的函数,例如。

<?php current_paged(); ?>
如果您需要代码来处理自定义查询,即使用WP_Query, 然后简单地将保存查询的变量的名称传递给函数。

Example non-existant query:

$fred = new WP_Query;
$fred->query();
if( $fred->have_posts() ) 
... etc..
使用之前发布的函数获取自定义查询的当前页面。。

<?php current_paged( \'fred\' ); ?>
如果您想完全忘记自定义查询支持,而您正在寻找一个单行程序,那么这应该可以做到。。

<?php echo \'Page \'. ( get_query_var(\'paged\') ? get_query_var(\'paged\') : 1 ) . \' of \' . $wp_query->max_num_pages; ?>
希望有帮助:)

SO网友:Alex Standiford

如上所述,获取最大页数的更简单方法是:

global $wp_query

$wp_query->max_num_pages

SO网友:andiOak

在我的所有存档页面上都可以使用的一个选项是:

$paged_maxnum = $GLOBALS[\'wp_query\']->max_num_pages;

if ( $paged_maxnum > 1 ) {

    $paged_current_page = get_query_var( \'paged\' ) ? intval( get_query_var( \'paged\' ) ) : 1;
    $title_page_nrs = \'page nr \' . $paged_current_page . \' of \' . $paged_maxnum;

    echo \'<title>\' . get_the_archive_title( \'\', false ) . \' - \' . $title_page_nrs . \' | Your Website Name</title>\';

} else {

    echo \'<title>\' . get_the_archive_title( \'\', false ) . \' | Your Website Name</title>\'; 

}
首次查询此中是否有多个页面wp_query, 然后通过连接标题与当前页面$paged_current_page 和总页数$title_page_nrs. 最后一点echo 信息技术如果首先超过1页,则else 如果未分页。这会进入我的档案。php或此类型的模板。它产生:

<title>Taxonomy title - page nr 1 of 4 | Your Website Name</title>

<title>Taxonomy title | Your Website Name</title>

SO网友:Abe

来自wordpress文档paginate_links( string|array $args = \'\' ):

<?php
global $wp_query;
 
$big = 999999999; // need an unlikely integer
 
echo paginate_links( array(
    \'base\'    => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
    \'format\'  => \'?paged=%#%\',
    \'current\' => max( 1, get_query_var(\'paged\') ),
    \'total\'   => $wp_query->max_num_pages
) );
?>
这将列出页码、下一篇文章和上一篇文章。您需要在希望显示页码的页面上发布此链接。

结束

相关推荐

Posts wont expire

我在安排帖子自动过期(要么删除,要么起草)方面遇到了一些麻烦,我尝试过的每个插件都没有做任何事情,当它达到预定时间时,什么都没有发生,这让我觉得这可能是我一直忽视的一件简单的事情。。我想我可能对wp-cron有问题,但我似乎在通过wordPress设置未来的发布日期方面没有任何问题。我运行了最新版本的Wordpress,并设置了多个站点。所有插件都是目前可用的最新版本。有人有什么想法吗??我没有东西可以尝试了。。。提前感谢塔夫芝