やりたかった内容は以下。
- カスタム投稿タイプ”event”でイベント開始日, 終了日などをカスタムフィールドで設置
- eventアーカイブページで月間カレンダー表示
- 管理画面は、カスタムフィールドの開始日の降順で表示
- 管理画面はイベント開始月でフィルタする
ってな感じ。表示側は以前get_calendarを真似て作ったことがあったので、比較的大きく躓くことなく表示できた。
しかし、管理画面は通常、投稿作成日で並んでしまう…。これ以前作った時は作らなかったんだけど、入力してるととても見づらい (*_*)
多分、pre_get_postsとかでやれば出来るんだろうなぁと思ったままだったので、今回は(避けずにw)やってみた。
基本、custom field – Filter post listing by meta value which is a date – WordPress Development Stack Exchange の記事と、偶然見つけた /wp-admin/includes/class-wp-list-table.php を参考にさせていただきました。
一緒に偶然見つけた /wp-admin/includes/class-wp-list-table.php も見てたら、分かり易かった (^^)
目次
先ずは一覧にイベント日付を追加
- カスタムクエリを追加
- イベント開始日カラムを追加
- デフォルトの投稿日カラムを削除
- イベント開始日データをY/m/dで表示
- デフォルトの日付フィルタを削除
- 開始日カスタムフィールドの年月ドロップダウンを追加
- 月内のイベントをフィルタするよう追加
といった感じ。
これなら、ザクザク追加してもフィルタできるから一覧しやすい 😀
[php]
<?php
$meta_query[] = array( ‘key’ => ‘event_date’,
‘value’ => array( $month->format( ‘Ymd’ ), $month->format( ‘Ymt’ ) ),
‘compare’ => ‘BETWEEN’,
);
[/php]
の部分がなるほど!! っとスッキリした (^^)
ほんと、ありがとうございます!!
表示側は、トップページに今週、アーカイブに月別のイベントを表示、管理画面はイベント月別でフィルタOKで、快適になった 😀
イベントのフィルタって、「向こう○ヶ月」とか「過去のイベント」とか「上半期」とかキーワードでもフィルタできそう。
一覧を開いたとき、今月分だけ表示ってしたかったけど、イベント追加する場合って、今月だけ見たいわけじゃないよなぁと思って止めてしまった ^^;
そうそう、WP_List_Table ってクラスも見つけたので、これもやってみたい (^^)