# WordPressでカスタムフィールドを使いやすくするプラグイン「Magic Fields 2」

- リンク: https://torounit.com/blog/wordpress%e3%81%a7%e3%82%ab%e3%82%b9%e3%82%bf%e3%83%a0%e3%83%95%e3%82%a3%e3%83%bc%e3%83%ab%e3%83%89%e3%82%92%e4%bd%bf%e3%81%84%e3%82%84%e3%81%99%e3%81%8f%e3%81%99%e3%82%8b%e3%83%97%e3%83%a9%e3%82%b0/
- 公開日: 2012-05-29T10:00:58+09:00
- 作成者: Toro\_Unit

投稿画面で、カスタムフィールド用の入力欄をこさえるプラグインは[Custom Field Template](http://wpgogo.com/development/custom-field-template.html)
とかが有名ですよね。作者も日本人なので、使い方の情報とかも整備されているので、とても
便利に使わせてもらっています。

ただ、今回はそれとはちょっと毛色の違うプラグインです。

# 󠀁[Magic Fields 2](http://magicfields.org/)󠁿

Custom Field Templateとはかなり毛色の違うプラグインです。Magic Fields 2の方はとにかく
多機能です。主な機能としては、

 * フィールドのグループ化
 * 投稿時に複製可能なフィールド、グループの作成
 * 入力必須なフィールドの作成
 * テキストボックス、マークダウン、ドロップダウンメニュー、画像、オーディオ、ファイル…
   等のいろんな種類のフィールドを作成可能
 * 日付入力支援や、フィールドの説明文を管理画面でツールチップで表示

等々、便利機能が満載です。

基本的にはシンプルにWordPressの機能を活用して＋αとしてカスタムフィールドを使うとき
はCustom Field Template、入力欄をガッツリカスタマイズするようなものはMagic Fields
2という使い分けをしています。
 カタログのようなサイトとか、ライブハウスのスケジュール
とか、かなりガッツリフォーマットが決まっているようなサイトには便利だなと思ってます。

ただ、カスタムフィールドの複製機能を使ったりした場合、順番通りにカスタムフィールド
に格納されるとは限らなかったり、画像の処理などに独自の関数を用いていたり、ちょっと
WordPressの標準のテンプレートタグで扱おうとすると結構痛い目を見ます。
 関数がかなり
強力なんで、[Wiki](http://wiki.magicfields.org/doku.php?id=front-end_functions)も
あるのですが、英語かスペイン語で書かれてるので、めちゃくちゃハードルが高いです。

なので、ちょっとしたスニペッドをいくつか。

# get()

[php]
 get($fieldName, $groupIndex=1, $fieldIndex=1, $readyForEIP=true,$post_id=
NULL); [/php] カスタムフィールドの値を取得します。

[php]
 echo get(‘price’); [/php]

みたいに使います。

[php]
 echo get(‘brand’,8); [/php] $groupIndexは、複製したグループの番号です。この
場合、複製可能なあるグループの8番目に所属するbrandの値を取得します。

[php]
 echo get(‘time’,1,4); [/php] とすれば、1番目のグループの、複製可能なtimeという
フィールドの4つめの値を持ってきます。

$readyForEIPは表示されてる画面で直接値の修正が出来る機能を有効にするか、しないか
みたいなもののようですが、動作が確認できてません。

また$post_idで記事のIDを指定することが出来ます。ループ外で使うときなどは有効かも。
[
php]

[/php]

# get_image()

[php]
 get_image ($fieldName, $groupIndex=1, $fieldIndex=1,$tag_img=1,$post_id=NULL,
$override_params=NULL); [/php]

$fieldName, $groupIndex, $fieldIndex, $post_idはget()と一緒。$tag_imgがtrueならimg
タグ、falseなら、画像のURLが返却されます。

$override_paramsで画像のサイズ等を変更することが出来ます。
 [php] echo get_image(‘
photo’,1,1,1,null,null,null,’thumbnail’); [/php] また、配列でパラメーターを渡す事
で画像の生成ができるようです。が、ちょっと解読できなかったと言うのと、WordPressの
元々の機能で十分かなって思います。

# get_group()

[php]
 get_group($name_group,$post_id=NULL); [/php]

get_gruoupは一つ一つキーを持ってくるgetではなく、そのグループのキー全てを配列で持
ってきます。

[plain]
 Array ( [1] => Array ( [marca] => Array ( [1] => una marca )

 [foto] => Array
 ( [1] => Array ( [original] => http://mf2.local/wp-content/files_mf/
1307562748IrinaShaykWallpaper4.jpg [thumb] => http://mf2.local/wp-content/files_mf/
1307562748IrinaShaykWallpaper4.jpg )

 )

 )

 [2] => Array
 ( [marca] => Array ( [1] => marca dos )

 [foto] => Array
 ( [1] => Array ( [original] => http://mf2.local/wp-content/files_mf/
1307560459IrinaSheik_002014.jpg [thumb] => http://mf2.local/wp-content/files_mf/
1307560459IrinaSheik_002014.jpg )

 [2] => Array
 ( [original] => http://mf2.local/wp-content/uploads/2011/06/IMG_0001.
jpg [thumb] => http://mf2.local/wp-content/files_mf/cache/th_cbd8d15a6177234f018d40337840663e_IMG_0001.
jpg )

 )

 )

)

[/plain]

こんな感じでグループ全てのキーを一度に持ってくる事が出来ます。
 複製可能なグループ
の場合、戻り値が配列になっているので、foreach等で取り出したりしやすいです。

また、[カスタムフィールドをカスタマイズするプラグイン「MagicFields2」-CREATORISH-](http://creatorish.com/weblog/709)
で、日本語化ファイルが配布されています。

結構手軽に大規模な管理画面のカスタマイズが出来てしまうので、なかなか便利。
