記事一覧を並び替えるquery_postsについて
ここでは、ソート(並び替え)に使うquery_postsについて説明します。
query_postsとは、WordPressのテンプレートタグで、記事をどのように表示するかを設定するタグです。
記事の並びを変えるだけでなく、指定したカテゴリーだけで記事一覧を表示したりなども出来ます。
実際に使うときは、<? php query_posts();?>という形で使用します。()の中に
いろいろなパラメータを入力することで記事一覧(ループ部分の記述)の表示順番や表示する記事の種類を設定します。
query_postsの使い方
ループの記述とは?
簡単にいうと、記事の一覧表示するための記述で
<?php if(have_posts()): while(have_posts()): the_post();?>
<?php get_template_part(‘content’);?>
<?php endwhile; endif; ?>
このようなWordPressの記述のことです。
主に、home.phpやcategory.php、date.phpやtag.phpなどあたりに記入されています。
query_postsの使い方について説明します。
query_postsは、ループ文の記述(記事の一覧表示などに使う記述)のあるファイルに一緒に記述することで効果を発揮します。記述を記入する位置は、必ずループ文の記述の前に記入する必要があります。
query_postsはパラメータを設定することで、どのように記事を表示するか決めることが出来ます。
query_postsに設定できるパラメータは、非常にたくさんありますので、ここでは主にソート(並び替え)に関係するパラメータに重点を絞って紹介します。
WordPress Codex日本語版
本家サイトのquery_postsの説明ページです。
多少、英語まじりです。
understandard -query_posts パラメーター-
本家サイトのquery_postsの説明ページを
独自に翻訳しているそうです。
わかりやすかったので紹介します。
ソート(並び替え)以外のquery_postsのパラメータについては、詳しく説明しているサイトをあわせて紹介しておきますので、 そこを参考にしてください。
query_postsのパラメータ
order=DESC
ページの並び順で 大→小 の並べ方となります。
デフォルトでは、投稿IDの大きさを見ているようなので
後で追加した記事が一番上に来ます。
例えば、カスタムフィールドなどと一緒にパラメータにセットすると、カスタムフィールド値が多い順に
多→少 という順番に並びます。文字列のカスタムフィールドの場合は、 わ→あ というような順に
並びます。
order=ASC
order=DESCとは逆にページの並び順で 小→大 の並べ方となります。
デフォルトでは、投稿IDの大きさを見ているようなので一番最初に記入した記事が一番上に来ます。
例えば、カスタムフィールドなどと一緒にパラメータにセットすると、カスタムフィールド値が少ない順に
少→多 という順番に並びます。文字列のカスタムフィールドの場合は、 あ→わ というような順に
並びます。
orderby=meta_value&meta_key=カスタムフィールド名
カスタムフィールドの値で並び替える時に使います。カスタムフィールドの値を文字列で比較して
並び替える場合は、こちらを使います。主に、記事を五十音順などで並べ替える時に使います。
orderby=meta_value_num&meta_key=カスタムフィールド名
カスタムフィールドの値で並び替える時に使います。カスタムフィールドの値を数値で比較して
並び替える場合は、こちらを使います。プラグインのWP-PostViewsと組み合わせると、
アクセス数での並び替えなどができます。WP-PostRatingsと組み合わせれば記事の評価の
並び替えができます。数値で並び替えが出来ますので かなり応用性の高い並び替えが出来ます。
orderby=comment_count
コメントされている数値で並び替える時に使います。
posts_per_page=
1ページに表示させる記事の数を指定する時に使うパラメータです。-1の場合すべての投稿が
表示されます。
paged=
インデックスやアーカイブページが複数わたる場合、何ページ目を表示するかを指定する
パラメータです。指定する値は、基本的にグローバル変数の$paged となります。
ただしパラメータに入れる文字列は、普通「’(シングルクィーテーション)」で囲みますが、変数は、 「’(シングルクィーテーション)」で囲んではいけません(phpが処理出来なくなります。)ですので、
<?php query_posts(‘paged=’ . $paged);?> というように「.(ピリオド)」を使って入れます。
以上が、よく使うパラメータとなります。パラメータを使うときは、「’(シングルクィーテーション)」で囲んで
記入します。
例: <?php query_posts(‘order=DESC’);?>
また、パラメータは複数入れることも可能です。複数のパラメータを入れたい場合は、「&」を使って
入れることが出来ます。
例:
<?php query_posts(‘order=ASC & orderby=meta_value&meta_key=furikana’);?>
<?php query_posts(‘order=ASC & paged=’ . $paged);?>
query_postsを実際に使ってみる
query_postsを実際に使ってみて慣れてみましょう。
<?php query_posts(‘order=ASC’);?>をループ記述の前に挿入して変化を確認してみましょう。
実際に使ってみるとすごく簡単に変更できますのでスグ慣れると思います。
以上で簡単ですがquery_postsについての説明は終了です。フォームを使って動的に
query_postsの値を変化させるソート(並び替え)の講座に進んでいきましょう。
それでは、ソート(並び替え)の記事で実際にソート(並び替え)を作ってみてください。
この記事へのコメント
【コメントの投稿の仕方について】
このサイトでは、「Disqus」と呼ばれるコメント機能を使っています。
ツイッターやフェイスブックなどにアカウントをお持ちの方は、ログインすることで
自分の各プロフィールでコメントすることが出来ます。
なんのアカウントもない人もメールアドレスさえ入力すればコメントできます。
(入力したメアドはコメント投稿には表示されません。)
また、コメント欄には画像を張ることも出来ます。
なにか書いていただけると管理人が嬉しがります。