独自のカスタムフィールド設定項目を作る

WordPressのカスタムフィールドは投稿ページや固定ページごとに情報を持たせて、いろいろな処理をするのにとても便利なのでいつも使っています。ですがデフォルトのカスタムフィールド編集画面はテキストエリアのみなので、性質の違う情報や1つのキーに複数の情報をもたせたい時に使い勝手が悪くなります。例えば、対象の記事にある項目が有効or無効のどちらかである情報を持たせたいとき、有効=’1’、無効=’0’という情報をテキストエリアに入力するのは少し使い勝手が悪いです。1種類のキー(meta_key)に複数の値を持たせたい場合、同じ名前のキーで違う値のものを追加していけば可能ですが、とても扱いにくいです。。
こういった場合は、チェックボックスを使って設定ができれば使い勝手がとても良くなります。それ以外にもラジオボタンやプルダウンメニューで選択設定を持たせることもとても有効です。
それではこれらの画面を作ってみましょう。

編集画面を作る

管理画面に独自のカスタムフィールド設定項目を持つには、以下の2つの流れの処理を行います。
まず”add_meta_boxes”をアクションフックして、カスタムフィールドの編集画面を作ります。以下のコードをfunction.phpに追加します。

“add_meta_box”の引数に設定するコールバック関数で、カスタムフィールドを設定するためのチェックボックスやラジオボタンなどを表示するHTMLを記述します。

スポンサーリンク

カスタムフィールドの編集画面を作成したら、次に設定した値を保存する処理を記述します。以下のコードをfunction.phpに追加します。

※ nonce(ノンス)とは

nonce(ノンス)とはセキュリティの考え方の1つで「number used once」の略です。一度だけ使われる番号という意味で、ワンタイムトークンと呼ばれることもあります。POSTやGETなどのHTTPリクエストを使った悪意ある攻撃などから防御します。一度だけ使えるワンタイムトークンなので、重複したリクエストから悪意あるリプライ攻撃を見破り、Webサイトを保護します。WordPressのnonceは管理画面に対するCSRF攻撃(URL-wiki)対策としてより単純化されていて、データベースへの保存など重要な場面で、通常の認証や権限のチェックだけではスルーしてしまうCSRF攻撃を、nonceで防ぐのがお約束となっています。また厳密にはWordPressのnonceはワンタイムではなく24時間再利用が可能になっています。

これらの設定項目を使って内容を表示するとこのようになります。

各カスタムフィールドの値は必要に応じてエスケープやサニタイズを行ってください。
独自にカスタムフィールド設定項目を作成する方法を紹介しましたが、独自に作成するのが嫌な場合はプラグインを使う方法もあります。例えば、Advanced Custom Fieldsというプラグインを使えばとても簡単にカスタムフィールドを使うことができます。構築するサイトの内容や状況に応じてカスタムフィールドの使用方法を選んでください。