web-dev-qa-db-ja.com

現在のページ番号を取得

1ページに20の投稿がある場合。一番下にNiceページへのリンクを作成するために、現在のページ番号を取得したいと思います。どうやって現在のページを手に入れますか。私はこれを試しました

<?php echo '(Page '.$page.' of '.$numpages.')'; ?>

そしてそれはただ各ページの1の1ページを言う。

何か案は、

素晴らしい

10
Robin I Knight

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()を使って)。

15
EAMann

1行のコードでそれを行うことができますが、それでも、他の場所にコードを追加することをお勧めします。したがって、通常は関数のほうが便利です。

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;
}

注: コードは関数ファイルに入れることができます。

例えば ​​"Page x of y"メッセージを表示したい場所に関数を呼び出すだけです。

<?php current_paged(); ?>

あなたがコードをカスタムクエリで動作させる必要があるなら、すなわち。 WP_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; ?>

それが役立つことを願っています.. :)

6
t31os

前述したように、最大​​ページ数を取得するためのより簡単な方法は次のとおりです。

global $wp_query

$wp_query->max_num_pages

0
Alex Standiford