「WordPressで学ぶPHP(1)変数・制御構造編」が発売されました。
「WordPressで学ぶPHP」シリーズの第1巻で、WordPressを通してPHPを学んでいく本です。
この本では、PHPの基本となる変数と制御構造について解説します。
Kindle本で、定価500円です。
カスタムフィールドの値を一覧画面に表示するプラグイン(その4)
昨日に続いて、プラグインで独自のデータ型のカスタムフィールドを追加した場合に、そのデータを最適な形で一覧画面に表示するために、プラグインを拡張する方法を解説します。
今日は、コールバックを使う方法を紹介します。
なお、今日でカスタムフィールドの値を一覧画面に表示するプラグインの解説は終わりです。
1.customfields.list_propertiesコールバック
このプラグインをインストールすると、「customfields.list_properties」というコールバックが追加されます。
このコールバックは、レジストリにlist_propertiesの情報を設定する直前に呼び出されます。
コールバックのサブルーチンには、以下の4つの情報が渡されます。
| 情報 | 内容 |
|---|---|
| $cb | コールバックのオブジェクト |
| $app | アプリケーション(MT::App)のオブジェクト |
| $fields | list_propertiesに設定する情報を持ったハッシュリファレンス |
| $field_map | $fieldsに属するカスタムフィールドのキーを、カスタムフィールドのデータ型ごとに配列にまとめたハッシュリファレンス |
例えば、IDが1番のブログで、ブログ記事に以下のようにカスタムフィールドを追加しているとします。
| 種類(データ型) | ベースネーム |
|---|---|
| テキスト(text) | entry_pref |
| テキスト(text) | entry_address |
| 日付(datetime) | entry_birthday |
この場合、$fieldsと$fields_mapは、それぞれ以下のような構造のデータになっています。
$fields = {
blog1_entry_pref => {
entry_prefフィールドについてlist_propertiesに登録する内容
},
blog1_entry_address => {
entry_addressフィールドについてlist_propertiesに登録する内容
},
blog1_entry_birthday => {
entry_birthdayフィールドについてlist_propertiesに登録する内容
},
}
$field_map = {
text => [
'blog1_entry_pref', 'blog1_entry_address',
],
checkbox => [
'blog1_entry_birthday',
],
}
各フィールドについて、list_propertiesに登録する内容をプラグインで上書きすることで、フィールドの値の表示方法等を変えることができます。
2.事例
このコールバックを使って、拙作のGoogleMapsCustomFieldプラグインを改良しました。
Googleマップのカスタムフィールドを追加した場合に、地図のサムネイルをオブジェクト一覧のページに表示できるようになります。
プラグインは明日公開します。
