私は私のサイトのためにページネーションを作成しています。以下のコードが何のために使われているのか、誰にでも私に説明できることを望みますか?前もって感謝します。
<?php
if ( get_query_var('paged') ) {
$paged = get_query_var('paged');
} elseif ( get_query_var('page') ) {
$paged = get_query_var('page');
} else {
$paged = 1;
}
query_posts('paged='.$paged.'&posts_per_page=');
?>
クエリ変数が何であるかを理解してください。そうでない場合は、簡単に説明します。メインクエリはWP_Query
を使用して自身をセットアップします。メインクエリでは、WP_Query
はパブリッククエリ変数を使用して、要求されているページに従ってメインクエリを構築します。paged
とpage
はそのうちの2つです。すべてのパブリッククエリ変数を表示するには、ヘッダーにこれを貼り付け、クエリされたページに従ってどのように設定されているかをすべてのテンプレートで確認します
var_dump($wp_query->query_vars);
関数 get_query_var()
は、これらのパブリッククエリ変数から値を取得するために使用されます。この場合は、page
およびpaged
です。
質問に答えるために、これらの2つのパラメーターとその値はWP_Query
によって使用され、ページ番号、さらに重要なことにページ番号に応じた投稿のオフセットを計算します。ページをページングするときに投稿ページが正しくなることを保証するのはこのパラメーターです
paged
->ホームページ、ブログページ、アーカイブページ、ページでページネーションを計算するために使用されます。最初のページは0
であり、そこから番号はページ番号に対応します
page
->ページネーション用の静的フロントページおよび単一ページで使用します。これらのページのページネーションは同じように機能し、静的なフロントページはページネーションの単一ページとして扱われます。単一ページのページネーションとは、単一の投稿を複数のページに分割できることを意味します
コードは基本的に、paged
パラメーターが設定されているかどうかを確認し、それが失敗した場合はpage
パラメーターが設定されているかどうかを確認し、設定されていない場合はページを1
。このチェックは常にページ1で失敗するため、$paged
は常に1
にフォールバックします。ページ1以外のページでは、paged
またはpage
のいずれかがtrueを返し、$paged
を正しいページ番号に設定します
最後の注意:ページで何かを壊す必要がある場合を除き、query_posts
を決して使用しないでください。ページ分割されたカスタムクエリには、常にWP_Query
を使用します。これに関する完全な説明については、 this post を参照してください。