ユーザー毎のデータ集計表

入力されたデータをユーザー(投稿者)毎、年区切りで表に出力する。
データの持たせ方にも依るのかもしれないけど、今回は

  • 症例とその症例に対する手術を入力
  • 症例に対する手術は複数
  • 手術は症例特有なものではなく、他の症例でも同じ手術がある
  • それぞれの手術に加えて「その他」を追加する
  • 年別に集計したデータを見たい
  • ユーザー毎の集計(年別)を見たい

な感じだったので、集計用のカスタム投稿タイプとカスタムタクソノミーを「症例」「術名」と作成した。
困った?のは、管理画面は嫌だと言うことで、フロントに置いたフォームから入力してもらう事に。今回は、ACFのacf_formを使った。

症例フィールドで症例を選択すると、関連する術名を絞り込んで表示させて選択という希望だったので、悩んだ挙げ句、フィールド名とカスタムタクソノミーのターム名を関連付けて、フォームから受け取った時点でそれぞれのタクソノミーに登録することにした。

スゲー困ったのは、データの更新。
新規投稿だけなら良いんだけど、フロントからユーザー個別の投稿を編集・削除できるようにしなければならない…(^0^;)
最終的には、新規ならwp_insert_post、更新ならwp_update_postを使った。

投稿のタイトルを症例名_術名_実施日としていたので、更新時にタクソノミーを登録し直す部分で結構ハマった…。。

あとは、テーブルに出力する部分。
rowspanを設定する部分が頭ではわかってるのになかなか出せなかった。
最終的にはデータを配列に入れて、

  • 症例が同じ場合はまとめる
  • 術名の「その他」は並び順で一番下へ

などをunsetやらループやら使って出力した。表へ出力する場合って、配列便利なんすね 😀

ってことで、コード。……長いんだよなぁ…。もちっと短く書けないかなぁ…( ^o^)ノ