入力されたデータをユーザー(投稿者)毎、年区切りで表に出力する。
データの持たせ方にも依るのかもしれないけど、今回は
- 症例とその症例に対する手術を入力
- 症例に対する手術は複数
- 手術は症例特有なものではなく、他の症例でも同じ手術がある
- それぞれの手術に加えて「その他」を追加する
- 年別に集計したデータを見たい
- ユーザー毎の集計(年別)を見たい
な感じだったので、集計用のカスタム投稿タイプとカスタムタクソノミーを「症例」「術名」と作成した。
困った?のは、管理画面は嫌だと言うことで、フロントに置いたフォームから入力してもらう事に。今回は、ACFのacf_formを使った。
症例フィールドで症例を選択すると、関連する術名を絞り込んで表示させて選択という希望だったので、悩んだ挙げ句、フィールド名とカスタムタクソノミーのターム名を関連付けて、フォームから受け取った時点でそれぞれのタクソノミーに登録することにした。
スゲー困ったのは、データの更新。
新規投稿だけなら良いんだけど、フロントからユーザー個別の投稿を編集・削除できるようにしなければならない…(^0^;)
最終的には、新規ならwp_insert_post、更新ならwp_update_postを使った。
投稿のタイトルを症例名_術名_実施日としていたので、更新時にタクソノミーを登録し直す部分で結構ハマった…。。
あとは、テーブルに出力する部分。
rowspanを設定する部分が頭ではわかってるのになかなか出せなかった。
最終的にはデータを配列に入れて、
- 症例が同じ場合はまとめる
- 術名の「その他」は並び順で一番下へ
などをunsetやらループやら使って出力した。表へ出力する場合って、配列便利なんすね 😀
ってことで、コード。……長いんだよなぁ…。もちっと短く書けないかなぁ…( ^o^)ノ