1ページに20の投稿がある場合。一番下にNiceページへのリンクを作成するために、現在のページ番号を取得したいと思います。どうやって現在のページを手に入れますか。私はこれを試しました
<?php echo '(Page '.$page.' of '.$numpages.')'; ?>
そしてそれはただ各ページの1の1ページを言う。
何か案は、
素晴らしい
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()
を使って)。
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; ?>
それが役立つことを願っています.. :)
前述したように、最大ページ数を取得するためのより簡単な方法は次のとおりです。
global $wp_query
$wp_query->max_num_pages