成果物をまとめて確認する
[成果物]順序をデザインする!WP_Query並び替えの実践テクニック
【順序をデザインする!WP_Query並び替えの実践テクニック】の成果物です。投稿の学びを終えた時点の構成を一覧でご確認いただけます。
前回の記事では、WP_Query
関数による投稿一覧の表示について学習し、基本的な使い方をマスターしました。投稿をデータベースから取得してHTMLで表示する仕組みを理解できたところで、今回はWP_Query
の「並び替え機能」について詳しく学習していきます。
並び替え機能を自由に操ることで、投稿日順、タイトル順、ランダム表示など、サイトの用途に応じた最適な投稿一覧を作成できるようになります。
今回の目標
目次
まずは実習用の投稿データを準備しましょう。以下の手順で、カテゴリーの作成と投稿への設定を行います。
管理画面の投稿→カテゴリーから、以下のカテゴリーを作成してください。
既存の投稿に以下のカテゴリーを設定してください。
前回作成したpage-news.phpを修正して、日付とカテゴリーを表示するようにしましょう。
echo '<li><a href="'.get_the_permalink($post->ID).'">'.get_the_title($post->ID).'</a></li>'.PHP_EOL;
$categorys = get_the_category($post->ID);
if(isset($categorys)){
$category = $categorys[0]->name;
} else {
$category = '未設定';
}
echo '<li>'.
'<span class="date">'.get_the_date('Y年m月d日').'</span>'.
'<span class="category">'.$category.'</span>'.
'<a href="'.get_the_permalink($post->ID).'">'.get_the_title($post->ID).'</a>'.
'</li>'.PHP_EOL;
この修正により、各投稿の日付とカテゴリー名が表示されるようになります。get_the_category()
関数は配列を返すため、[0]
で最初のカテゴリーを取得しています。
1行目
get_the_category
でIDに紐づくカテゴリーを取得
2行目~6行目
isset
関数で$categorys
変数に値があるかどうかチェックしています。値がある場合、1つ目のカテゴリー($cagegorys
変数の0番目)を取得。値がなければ「未設定」とします。
7行目~11行目
コードを読みやすいように複数行に分けました。get_the_date
で投稿日を取得。$category
変数でカテゴリーを表示。スタイルシートで装飾できるようにspan
タグにクラスを追加しています。
これで下準備が整いました。それでは、並び替えをしてみましょう。
現在のpage-news.phpでは、以下のような基本的な抽出条件を使用しています。
$args = [
'post_type' => 'post',
'post_status' => 'publish',
];
この状態では並び替えの指定がないため、WordPressのデフォルトである投稿日(date
)の降順(desc
)で表示されます。
WP_Query
では、検索条件に並び替順(order
)と並び替え項目(orderby
)を指定することができます。
並び順の種類:
asc
→ 昇順(A
→Z
、古い→新しい)desc
→ 降順(Z
→A
、新しい→古い)orderby | 説明 |
---|---|
ID | 投稿IDで並び替え |
author | 著者で並び替え |
title | タイトルで並び替え |
date | 投稿日で並び替え(デフォルト値) |
modified | 更新日で並び替え |
parent | 投稿/固定ページの親IDで並び替え |
rand | ランダムで並び替え |
comment_count | コメント数で並び替え |
menu_order | 管理画面上の表示順で並び替え(主に固定ページで使用) |
page-news.phpの抽出条件を以下のように修正してみましょう。
$args = [
'post_type' => 'post',
'post_status' => 'publish',
'orderby' => 'title',
'order' => 'asc',
];
この設定により、投稿一覧の表示順序が以下のように変わります。
タイトルがアルファベット順(あいうえお順)で並び替えられていることが確認できましたか?
場合によっては複数の条件で並び替えたい時もあります。例えば、「まずタイトルで並び替えて、同じタイトルがあった場合は投稿日で並び替える」といった複雑な並び順を指定できます。
複数条件を指定する場合は、orderby
を配列にします。
$args = [
'post_type' => 'post',
'post_status' => 'publish',
'orderby' => [
'title' => 'ASC',
'date' => 'DESC',
]
];
この設定では、まずタイトルの昇順で並び替え、タイトルが同じ投稿がある場合は投稿日の降順で並び替えられます。
$args = [
'post_type' => 'post',
'post_status' => 'publish',
'orderby' => 'rand',
];
ページを表示するたびに並びがことなるため、読者は新鮮な感覚でWebサイトを閲覧できます。ブログなどに有効ですね。
$args = [
'post_type' => 'post',
'post_status' => 'publish',
'orderby' => 'modified',
'order' => 'DESC',
];
投稿日ではなく更新日順に並び替えることもできます。変更を知らせたいときに便利です。
この記事で学んだ方法だけでは、カテゴリーで並び替えることはできません。それは、1つの記事に複数のカテゴリーを設定できるからです。
しかし、あるテクニックを使うことで、カテゴリー順での並び替えを実現できます。そのためには、まず抽出条件を覚える必要があります。
その方法を次回以降の記事で紹介しますのでお楽しみに。
今回の記事では、WP_Query
の並び替え機能について詳しく学習しました。重要なポイントをまとめると:
orderby
とorder
を使った単一条件での並び順指定並び替え機能をマスターすることで、サイトの目的に応じた最適な投稿一覧を作成できるようになります。特に、カテゴリー順での並び替えは実用的なテクニックとして覚えておくと便利です。
次回は 抽出条件 について学習します。
カテゴリーを指定した抽出を覚えると、カテゴリー順ができるようになります。次回もお楽しみに!
この記事で作成した成果物は、以下のページでまとめて確認することができます。
WP_Query関数を使用した投稿一覧の動的表示について、実践的なコード例とともに詳しく解説。ループブロックの制約を超えて、より柔軟で高度なWebサイト構築を可能にするWordPressの中核機能を学習できます。
WordPressのWP_Queryを使って、特定のカテゴリーや期間の投稿を絞り込む抽出条件について解説。カテゴリー指定、日付による絞り込み、複数条件の組み合わせなど、サイトのニーズに応じた柔軟な投稿一覧を作成する実践的なテクニックを学習できます。
WordPressを効率よく確実に学ぶためには、学習の順序が大切です。知識が自然に積み上がるよう、学習ステップに沿って記事を順番に並べています。
学習ストーリー第29話まで掲載中