【WordPress】Advanced Custom FieldsのTableにcolspanを適用してみる

こんにちは。
エンジニアの辻です。

お仕事の中で、Advanced Custom FieldsのTableを利用する機会がありました。
その時に「内容が同じセル同士をcolspanで繋ぐ」処理を実装してみました。その備忘録です。

まずはシンプルにAdvanced Custom Fields のTableを出力してみる

Advanced Custom Fieldsを利用して、下記のようなテーブルのカスタムフィールドを用意しました。

そして、上記のテーブルを出力するソースコードは下記の通りです。

実際に出力すると、下記のようになります。

うまい具合にカスタムフィールドのテーブルを表示できました。

ここまでは特に問題ないのですが、同じ内容のセルが連続して出力されるのは、どうも冗長的ですよね。
…というわけで、隣合うセルの内容が同じ場合は、colspanで連結した上で表示するよう改修を加えてみます。

隣り合うセルの内容が同じ場合に、colspanでまとめる処理

早速ですが、改修したソースコードです。

画面上の表示は以下のようになります。

実装した処理は非常にシンプルです。ざっくりとした流れは以下の通り。

  1. 空配列($flat_td/$flat_th)を用意する
  2. はじめにテーブルの内容をforeach文で精査する
  3. 隣り合うセルの内容が違うなら、新しい要素として$flat_td($flat_th)へ追加する
  4. 隣り合うセルの内容が同じなら、出現回数($flat_td[index番目][count])を1増やす
  5. $flat_td($flat_th)を元に、HTMLを出力する
  6. $flat_td($flat_th)の出力時に、countが1より大きければ、td/thタグにcolspan=”countの値”を付与する
  7. $flat_td($flat_th)の出力時に、countが1であれば、特に何もせず、td/thタグに中身を入れて出力する

要は…、
テーブルを出力する前に、一度テーブルの全項目を精査する
→ 同じ内容のセルがあれば、そのセルが何回出現するかを保持する
→ あとは出現する回数をcolspanに入れて、出力する
…ってだけですね。

まとめ

今回は、Advanced Custom Fields のTableを出力する時にcolspanを適用するちょっとしたテクニックのご紹介でした。

では、また!



❏❏ TOPIC ❏❏ ------------------------------------------------------------

カスタム自由!フリーECサイトパッケージ
チャットボット導入サービス
WEBシステム開発・スマホアプリ開発はSRIAへ