rakuishi.com

[WordPress] カスタムフィールドの登録とその表示方法

WordPress のカスタムフィールドについて調べてみました。

カスタムフィールドとは

ひとつの記事に紐付く追加データを取り扱うことが出来ます。

例えば、あなたが iPhone アプリを紹介するブログを書いている場合、記事にアプリの識別子を紐付けておけば、HTML タグを貼り付けることなく、WordPress の裏側で自動でリンクを作ることができます。日記ブログだったら、その日の天気情報を紐付けておくのもいいかもしれません。

カスタムフィールドがどのような構造になっているかは、カスタムフィールドの値が格納される wp_postmeta テーブルを見るとすぐに理解できます。記事 ID である post_id に紐付く、meta_key で値を取り出すことが出来ます。

-- Table structure for table `wp_postmeta`
CREATE TABLE `wp_postmeta` (
  `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `post_id` bigint(20) unsigned NOT NULL DEFAULT '0',
  `meta_key` varchar(255) DEFAULT NULL,
  `meta_value` longtext,
  PRIMARY KEY (`meta_id`),
  KEY `post_id` (`post_id`),
  KEY `meta_key` (`meta_key`)
);

カスタムフィールドを追加する

WordPress でカスタムフィールドを追加するには、記事編集画面の [表示オプション] から [カスタムフィールド] にチェックを入れます。

表示されるカスタムフィールドに、名前(meta_key)と値(meta_value)を登録します。

カスタムフィールドの値をテーマファイルで表示する

カスタムフィールドの値は記事投稿とは違って、自動で出力されるわけではありません。テーマファイルから、カスタムフィールドの値を使うようにプログラムする必要があります。

一番シンプルなのは、記事ループ中に以下のコードを読み込ませる方法です:

<?php the_meta(); ?>

リスト形式で以下のように表示されます:

<li><span class="post-meta-key">ios_app_id:</span> 725195676</li>

WordPress 3.5 以降なら次のように、キーに紐付く値を取り出すことが出来ます:

<?php
if (isset($post->ios_app_id)) {
  $ios_app_id = $post->ios_app_id;
  echo "https://itunes.apple.com/jp/app/id{$ios_app_id}?mt=8";
}
?>

参考

カスタムフィールドの使い方 - WordPress Codex 日本語版