Saba note

醜悪コード Ugly hacks ITものづくり

WordPressのカスタムフィールド

WordPressのカスタムフィールドはMTと比べてとてもシンプルです。WPの基本的な約束事として固定ページと 投稿ページは基本的に同じものです。ですのでカスタムフィールドも基本的に同じ構造で保ちます。管理画面から記事を投稿する際には、右上の「表示オプション」からカスタムフィールドにチェックを入れて、カスタムフィールドの入力欄を表示します。後はkeyと値を入れればOKです。登録したkeyは以後プルダウンで選択できるようになります。
加えてテーブル構造が非常にシンプルです。wp_postsが記事やページそのものをストックしているテーブル、wp_postmetaがカスタムフィールドを格納しているテーブルです。また、wp_postmetaは4つのフィールドしかありません。

  1. meta_id bigint(20)
  2. post_id bigint(20)
  3. meta_key varchar(255)
  4. meta_value lo

カスタムフィールド自体のレコードのID、そのカスタムフィールドがどの記事と結びついているかというpost_id、カスタムフィールドのkey、そしてその値です。これだけです。WPのカスタムフィールドは1つの記事に対して任意に設定が可能です。このテーブル構造だとそういうことができます。呼び出す際にはpost_idとkeyを与えて、

<?php echo get_post_meta($post->ID, 'customfield_key', true); ?>

というような感じでget_post_meta()で呼び出すことができます。かなりシンプルです。これらを応用するとかなり面白いことができそうです。
テーマなどのPHPから直接カスタムフィールドを操作する時には、順序としてwp_insert_post( [array] );などで投稿をしてから、成功した際に返ってくるpost_idを使ってupdate_post_meta()関数でもってカスタムフィールドの値をデータベースに保存します。

$return_id = wp_insert_post( $my_post );
update_post_meta($return_id, 'key', 'カスタムフィールドの値');

本家でも詳しく解説しています。

WordPressのカスタムフィールドを強化するプラグイン

Advanced Custom Fieldsというプラグインがあって、これ使うと比較的普通のイメージのカスタムフィールドになります。Wordpressのデフォルトのカスタムフィールドはプルダウンで項目を選んで…という感じでインターフェイス的にちょっと見づらい。このプラグインはかなりいい。
http://www.advancedcustomfields.com/
このプラグインの設定で「フィールド名」で設定した部分がいわゆるkeyになるところです。なので、samplefieldと設定したら、WPループとかsingle.phpの中で、

<?php echo get_post_meta($post->ID, 'samplefield', true); ?>

という風に呼び出せます。このプラグインで設定したカスタムフィールドはデフォルトのカスタムフィールドと同じ扱いができます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です