WordPressのイベント一覧を「開催日の近い順」に自動で並べるよう調整しました
WordPressでイベント情報を掲載しているサイトでは、「これから開催されるイベントを、開催日が近いものから順番に表示したい」というケースがあります。今回対応したサイトでも、イベント一覧の表示順を、管理画面上の並び順ではなく実際の会期を基準に自動で並べたいというご相談がありました。
確認したところ、イベントの開催日はカスタムフィールドに登録されており、複数日開催のイベントと1日開催のイベントで使用する日付項目が分かれていました。そのため、単純にWordPressの投稿順を変更するのではなく、それぞれのイベントから「並び替えの基準となる開催日」を取得し、日付順に整理する処理へ変更しました。
今回のご相談内容
今回のご相談は、WordPressで管理しているイベント一覧について、「会期の近いイベントが上に表示されるようにしたい」というものでした。
サイトには今後開催されるイベントを掲載するページがあり、各イベントには会期や会場、入場料などの情報が登録されています。管理画面には投稿の並び替え機能もありましたが、イベント情報の場合、更新した順番や手動で指定した順番よりも、実際の開催日を基準に自動で並んだほうが利用者にとって分かりやすく、運用時の手間も減らせます。
そこで、まず現在どのような条件でイベントを取得・表示しているのか、テンプレートのコードとカスタムフィールドの構成を確認しました。
発生していた症状・エラー内容
今回はサイトにエラーが発生していたわけではありません。イベント一覧自体は正常に表示されていましたが、「会期の近いものから順番に表示する」という運用上望ましい並び方になっていないことが課題でした。
既存のコードにも日付を使った並び替えの指定は入っていましたが、イベントの日付情報が1種類ではありませんでした。複数日開催の場合は開始日と終了日、1日開催の場合は単独の開催日が別々のカスタムフィールドに保存される構成になっていたため、単純に1つのカスタムフィールドだけを指定して並び替える方法では、すべてのイベントを同じ基準で扱うことができません。
また、今後開催されるイベントだけを表示するための条件やページネーションも設定されていたため、表示順だけを変更して既存の機能を崩さないことも必要でした。
原因の特定ポイント
確認のポイントになったのは、「イベントの表示対象を決める日付」と「イベントを並べるための日付」が必ずしも同じではないことです。
たとえば複数日開催のイベントでは、すでに開催初日を迎えていても終了日までは掲載を続ける必要があります。そのため、一覧に表示するかどうかの判定には終了日を使用します。一方、「どのイベントの会期が近いか」を判断する場合は、開催開始日を基準にするほうが自然です。
さらに、1日だけ開催されるイベントには別の日付項目が使用されていました。そこで今回は、複数日開催なら「開催開始日」、1日開催なら「開催日」をそれぞれ並び替え用の日付として扱うことにしました。
このように、WordPressで日付順に並べたい場合でも、単純に「日付で昇順にする」だけでは十分ではありません。実際にどの項目へ何の日付が保存されているのか、そしてその日付がどの処理に使われているのかを確認することが重要です。
実際に行った対応内容
今回は既存の記事データや管理画面の入力項目を変更せず、現在登録されているカスタムフィールドをそのまま利用する方法で対応しました。
まず、これから開催されるイベントを取得します。複数日開催の場合は終了日が現在日以降のもの、1日開催の場合は開催日が現在日以降のものを対象とし、終了しているイベントが「これから」の一覧に含まれない既存の条件は維持しました。
そのうえで、取得したイベントごとに並び替えの基準となる日付を決定します。複数日開催なら開催開始日、1日開催ならその開催日を取得し、それぞれを比較して日付の昇順、つまり開催時期が近いものから順番に並べる処理を追加しました。
また、このページにはページネーションがあるため、現在表示しているページのイベントだけを並べ替える方法にはしていません。先に対象となるイベント全体を開催日順に整理し、その結果を一定件数ごとに分割してページへ表示する形にしています。これにより、1ページ目と2ページ目をまたいでも開催日の順番が崩れないようにしました。
対応後の結果・改善点
修正後は、管理画面でイベントの掲載順を手動調整しなくても、開催時期の近いイベントから自動的に表示できる構成になりました。
たとえば、1日開催のイベントと複数日開催のイベントが混在していても、それぞれの開催開始日を基準として同じ一覧の中で時系列に並べることができます。また、すでに開催期間に入っているイベントについても、終了日を迎えるまでは掲載対象として残るため、「開催中なのに一覧から消えてしまう」といった問題も避けています。
今回は表示部分のデザインやイベント情報の入力方法には手を加えていません。必要な部分だけを変更することで、既存の運用をできるだけ変えずに表示順を改善しました。
今回の対応から分かったこと
WordPressの一覧表示では、「投稿日順」「更新日順」「タイトル順」だけでなく、カスタムフィールドに保存した日付などを使って表示順を制御することもできます。イベント、セミナー、展示会、キャンペーンなど、開催日が重要になるコンテンツでは特に有効です。
ただし、今回のように「開始日」「終了日」「1日開催の日付」など複数の日付項目を使っている場合は、どの日付を表示判定に使い、どの日付を並び替えに使うのかを整理する必要があります。
見た目としては単純な「開催日の近い順」でも、データの持ち方によって適切な実装方法は変わります。既存のコードやカスタムフィールドの役割を確認してから処理を変更することが、安全に改修するうえで重要だと改めて感じた事例でした。
同様のトラブルを防ぐために
イベント情報を継続的に更新するサイトでは、最初に「一覧を何の順番で表示するのか」まで決めておくと、その後の運用が楽になります。
特に、開催日のたびに管理画面から手動で順番を入れ替えている場合は、日付情報を基準に自動で並べられないか確認してみるのがおすすめです。登録済みの日付を利用できれば、更新担当者が毎回並び順を調整する必要がなくなり、並び替え忘れも防ぎやすくなります。
一方で、単純に日付順へ変更すると、開催中イベントの扱いや複数日開催、ページネーションなど別の部分に影響することもあります。既存サイトを修正する場合は、現在の表示条件を確認したうえで変更することが大切です。
メディアプライムスタイルのサポートについて
メディアプライムスタイルでは、WordPressサイトの保守や更新だけでなく、「現在の運用に合わせて表示順を変えたい」「既存の投稿データを使って自動化したい」といった細かな改修にも対応しています。
すでに運用しているWordPressサイトの場合、できるだけ既存の入力方法やデータを活かしながら調整できるケースもあります。日々の更新で手作業になっている部分や、少し使いづらいと感じている部分があれば、現在の構成を確認したうえで対応方法を検討します。
🐾 さぽたん日記からのご案内
ホームページを育てるお手伝い
ホームページは作って終わりではなく、
小さな修正や改善を重ねながら育てていくものです。
日々の対応内容を「さぽたん日記」でご紹介しています。