カスタムフィールドで複数PDFの表示 (Smart Custom Fields編)

今回の記事はカスタムフィールドで複数のPDF表示とグループ機能(Toolset Types編)の一部をSmart Custom Fields(以下、SCF)用に書き直したものです。以前と重複する内容を含みます。あらかじめご了承ください。

目的の表示条件と考え方

プレビュー

PDF投稿

表示の条件

表示の条件は下記のようにしたとします。

  • 投稿別に表示
  • PDFの登録が1つ以上の場合にのみ表示
  • PDFのリンクテキストは「タイトル」を表示
  • PDFのサイズを表示

実装の考え方

下記の考え方で実装したとします。

  1. カスタムフィールド値「$target_cf_slug」を配列で取得。
  2. array_filter()でカスタムフィールド値の判定。参考:PHPの連想配列で値がすべて空かどうかを判定する方法 – life.log.1
  3. カスタムフィールド値が空でない場合を条件に処理を開始。
  4. 各添付ファイル投稿(PDF)のIDを取得。
  5. IDを元にファイルURLやサイズ、タイトルを取得。
  6. 目的の表示内容に整形して出力。

実際のコード

SCFの設定で「繰り返し」をチェックした場合でも、取得するカスタムフィールド値「$target_cf_slug」はPDF用に設定した「名前」を指定します。PDFの場合、タイプは「ファイル」にしておけば取得できます。

set_cf_pdf_scf.php

さいごに

Toolset Typesの有料化に伴い、やむを得ず開発中のプロジェクトで同プラグインを使用できない状況になったため、検討した内容を元に記事にしてみました。ちなみに同プラグインの代替手段を Custom Post Type UI + Smart Custom Fields にするのが個人的にしっくりきています。