web-dev-qa-db-ja.com

$ pagedと$ pageの違いは何ですか?

私は私のサイトのためにページネーションを作成しています。以下のコードが何のために使われているのか、誰にでも私に説明できることを望みますか?前もって感謝します。

<?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=');
?>
2
Hung The

クエリ変数が何であるかを理解してください。そうでない場合は、簡単に説明します。メインクエリはWP_Queryを使用して自身をセットアップします。メインクエリでは、WP_Queryはパブリッククエリ変数を使用して、要求されているページに従ってメインクエリを構築します。pagedpageはそのうちの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 を参照してください。

10
Pieter Goosen