かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

Wordpress カスタムフィールドを追加できる「Custom Metaboxes and Fields for WordPress」が超便利だった

Wordpressのカスタムフィールドを追加できるプラグインも沢山あるのですが、
コードベースの方がデプロイなんかが楽なのでいつもコードで書いていました。
0から書いていると保存とか色々とメンドーな記述が多くて苦労していたのですが、WordPressのカスタムフィールドをコードベースで追加できるライブラリ「Custom Metaboxes and Fields for WordPress」 | webOpixel の記事で紹介されていた「Custom Metaboxes and Fields for WordPress」を使ってみるとすごく楽にカスタムフィールドを追加する事が出来ました。

ダウンロード

gitHubに公開されいるので、そのままダウンロードも出来ます。WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress · GitHub
これを展開してテーマファイルの中に置けばOK。

せっかくgitHub上にあるので、僕はgit submoduleとして取り込みました。

$ git submodule add https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress {% wordpress dir %}/wp-content/themes/{% theme name %}/metabox
$ git submodule init
$ git submodule update

[参考]
Git submodule の基礎 - Qiita
git submoduleを今風な感じで削除する - Qiita


使い方

使い方は「 WordPressのカスタムフィールドをコードベースで追加できるライブラリ「Custom Metaboxes and Fields for WordPress」 | webOpixel」の記事に丁寧に書かれていますので、ここを参考にすれば良いかと思います。

わからない部分があればgitHub上のwikiのを見れば捗ります。
僕がよくみてたページは

  • Basic Usage
    基本的なfunction.phpに記述する方法とフロントエンドでの使い方が書かれています。
  • Field Types
    追加したいカスタムフィールドのオプションがわからない時に参考になります。

使ってみて

type File

type Fileは通常はファイルのURLが保存されています。
wikiには書かれてないっぽいのですが、save_idというオプションがあり、wordpressにアップロードされたファイルのID(attachment ID)も合わせて保存するかどうかが選べます。

<?php /* function.php */
array(
    'name' => 'Test File',
    'desc' => 'Upload an image or enter an URL.',
    'id' => $prefix . 'test_image',
    'type' => 'file',
    'save_id' => true,
    'allow' => array( 'url', 'attachment' ) // limit to just attachments with array( 'attachment' )
),

上の例では$prefix . 'test_image' . '_id'というフィールド名でファイルのIDが一緒に保存されます。

また、メディアライブラリが起動するのですが、現状ファイルのMIMEタイプを制限したりする機能は無いようなので、仕様を制限させたい場合は出力側でMIMEタイプのチェックをするか、運用ベースでルール化するしか無さそうです。

この辺りを参考にすればファイルを制限させる機能作れそうな気がします。(気が向いたらやってみよう。。。)

group 機能

フィールドを自由に追加できるカスタムフィールドも'type' => 'group'で簡単に作ることもできるのでとても便利なのですが、
配列形式のテキストとしてDBのフィールドに保存される仕様なので、あまりにも分量が多くなるようなtextareaやwysiwygはグループ化しない方が良さそうな気がします。


試しに使ってみてすごく便利だったので、今後のupdateなどにも期待が高まります。
コードベースでカスタムフィールドも管理したいって人にはオススメできるライブラリだと思いました!!