Title: カスタムフィールドの使い方
Author: Dion Hulse
Published: 2018年10月27日
Last modified: 2024年9月26日

---

## カテゴリー

 * [はじめに](https://ja.wordpress.org/support/category/getting-started/)
 * [インストール](https://ja.wordpress.org/support/category/installation/)
 * [基本的な使い方](https://ja.wordpress.org/support/category/basic-usage/)
 * [基本的な管理](https://ja.wordpress.org/support/category/basic-administration/)
 * [カスタマイズ](https://ja.wordpress.org/support/category/customizing/)
 * [メンテナンス](https://ja.wordpress.org/support/category/maintenance/)
 * [セキュリティ](https://ja.wordpress.org/support/category/security/)
 * [高度なトピック](https://ja.wordpress.org/support/category/advanced-topics/)
 * [トラブルシューティング](https://ja.wordpress.org/support/category/troubleshooting/)

## 翻訳・改善にご協力ください

 ドキュメンテーションを現在[英語版](https://wordpress.org/support/)から翻訳中です。
どなたでも[ご協力いただけます](https://ja.wordpress.org/team/2019/08/06/359/)。

 誤字や間違った情報にお気づきの方は、各記事の下にあるフィードバックセクションから
お知らせください。

# カスタムフィールドの使い方

 WordPress には、投稿者が投稿にカスタムフィールドを追加できる機能があります。この
任意の情報は**メタデータ**と呼ばれており、たとえば以下のような情報を含めることが
できます。

 * **現在の気分:** 幸せいっぱい
 * **今読んでいる本:** 星の王子様
 * **BGM:** Rock Around the Clock
 * **今日の天気:** 晴れ

さらに、ちょっとしたコードを付け加えるだけで、この**メタデータ**に投稿の表示期限
を付け加えたりすることも可能です。

メタデータは**名前**と、その**値**の組み合わせからなっています。**名前**は、メタデータ
要素の名称のことを指します。**値**は、その要素に対応する情報を指します。

また、ひとつの記事で複数のメタデータの**名前**を使用することもできます。例えば今
読んでいる本が（職場での技術本と自宅でのフィクションのように）2冊ある場合、「今読
んでいる本」という名前を2度使い、それぞれに対し1冊の本の題名を記入すればよいのです。

カスタムフィールドを記入した場合、記事中に以下のように表示できます :

    ```wp-block-preformatted
    今読んでいる本: 星の王子様
    今日の天気: 晴れ
    ```

## 関数リファレンス

|  **追加、更新、削除**  |  **カスタムメタデータの名前・値を取得**  |  **テンプレートタグ**  | 
| [add_post_meta()](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/add_post_meta) | [get_post_custom()](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_post_custom) | [the_meta()](https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/the_meta) | 
|  [update_post_meta()](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/update_post_meta)  |  [get_post_custom_values()](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_post_custom_values)  |  [get_post_meta()](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_post_meta)  | 
|  [delete_post_meta()](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/delete_post_meta)  |  [get_post_custom_keys()](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_post_custom_keys)  |  |

## 使い方

上記の例に基づいて、実際にカスタムフィールドを使ってみましょう。ここでは、「今読
んでいる本」と、「今日の天気」というカスタムフィールドの値を追加します。

 1. 投稿を書いたあと、**カスタムフィールド**の欄までスクロールします。**注:** [WordPress バージョン3.1](https://wpdocs.osdn.jp/Version_3.1)
    より、投稿・固定ページ編集管理画面の[表示オプション](https://ja.wordpress.org/support/article/administration-screens/?output_format=md#screen-options)
    ではいくつかのものがデフォルトで非表示になっています。カスタムフィールドも、以前
    に使用されたことがない場合はデフォルトで非表示になっています。
 2.  新しい**カスタムフィールド**を作成するには**名前** と書かれた下にある欄に書き込み
    ます。まずはここに「今読んでいる本」というテキストを （引用符は無しで） 入力します。
 3. 新規作成した**名前**（「今読んでいる本」）に対応する値を追加します。今回の場合は、
    読んでいる本の題名になります。_値_の欄に「星の王子さま」と書き込みます。ここでも
    引用符は不要です。
 4. ここまで終わったら、**カスタムフィールドを追加**ボタンをクリックしましょう。

![](https://ja.wordpress.org/support/files/2018/10/custom_field_example_ja_2.jpg)

カスタムフィールド

「今日の天気」を追加するには、同じ手順を繰り返します。「今日の天気」を**名前**に
追加し、**値**のテキストボックスに天気を入力して**カスタムフィールドを追加**をクリック
します。最後に「保存」（または「公開」）ボタンをクリックして記事を保存します。

次に記事を投稿する際、別の本や天気をメタデータとして追加することができます。一度
追加した**名前**は**カスタムフィールド**欄にあるプルダウンメニューの項目として表示
されます。「今読んでいる本」を選択肢、**値**に読んでいる本を入力します。**カスタム
フィールドを追加**をクリックし、手順を繰り返して「今日の天気」を追加します。

新しい「名前」を作成する必要があるのは**一度だけ**です。その後は必要に応じて、記事
ごとにその名前と値を割り当てることができます。名前には複数の_値_を割り当てること
もできます。これは、一度に複数の本を読む人にとって便利です。

## カスタムフィールドを記事内に表示する

 カスタムフィールドを記事に追加したら、その情報をサイトで公開しましょう。 各記事
のカスタムフィールドを表示するには、`[the_meta()](https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/the_meta)`
テンプレートタグを使います。このタグは [WordPress ループ](https://wpdocs.osdn.jp/ループ)
内に置く必要があります。`the_meta()` テンプレートタグを記事の最初や最後の[記事メタデータセクション](https://wpdocs.osdn.jp/投稿メタデータセクション)
などに含めるという方法がよく使われます。以下が一般的なタグの記入例です。

    ```wp-block-code
    <?php the_meta(); ?>
    ```

上記の例の場合、ソースコードではこのように表示されているはずです。

    ```wp-block-code
    <ul class="post-meta">
      <li><span class="post-meta-key">今日読んでいる本:</span> 星の王子様</li>
      <li><span class="post-meta-key">今日の天気:</span> 晴れ</li>
    </ul>
    ```

テンプレートタグは、メタデータを順不同リスト（`<ul>`）形式で出力し、そのリストに`
post-meta` というクラスを自動的に割り当ててくれます。さらに名前は `post-meta-key`
というクラスの `<span>` 要素に囲まれるので、スタイルシートを使って見た目を変更する
ことができます。

カスタマイズするには、以下の宣言を使用中のテーマのスタイルシート（style.css）に追加
します。

    ```wp-block-code
    .post-meta { font-variant: small-caps; color: maroon; }
    .post-meta-key { color: green; font-weight: bold; font-size: 110%; }
    ```

サイト上では、以下のように表示されます。

 *   今読んでいる本:  星の王子様
 *   今日の天気:  晴れ

さらに、[公式プラグインディレクトリ](https://ja.wordpress.org/plugins/?output_format=md)
にはメタデータ表示に便利な機能を追加してくれるプラグインが色々とあります。[カスタムフィールドプラグインの Google 検索](https://www.google.com/search?hl=ja&q=%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%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3+WordPress&btnG=Google+Search)
でさらに多くのプラグイン情報を見つけられるでしょう。

カスタム投稿タイプ内でカスタムフィールドの対応を登録するには、以下のように ‘custom-
fields’ を使って ‘supports’ $args を追加してください。

    ```wp-block-code
    'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields' )
    ```

## カスタムフィールドを使ったさらに高度なテクニック

以下はメタデータ/カスタムフィールドを利用したさらに高度なテクニックです。

### カスタムフィールドを取得する

メタデータの値を取得するには、 `[get_post_meta()](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_post_meta)`
関数を使います。

    ```wp-block-code
    get_post_meta( $post_id, $key, $single );
    ```

 * `$post_id` は、メタデータの値を取得する記事のIDです。 `$post->ID` を使って記事
   のIDを取得してください。
 * `$key` は取得する名前の文字列です。
 * `$single` は `true` または `false` としてください。 `true` に設定されている場合、
   結果を1つの文字列として返します。 `false` の場合、カスタムフィールドの配列を返し
   ます。

#### 詳しいやり方

PostMeta で取得された情報は新しいテーブル内に格納されます（`$wpdb->postmeta`）。
このテーブルには4つのフィールドがあります。

 * ‘`meta_id`‘ – 各メタデータ項目の固有 ID
 * ‘`post_id`‘ – 取得したメタデータが属する記事の ID
 * ‘`meta_key`‘ – メタデータの名前
 * ‘`meta_value`‘ – メタデータの名前に対応する値

このテーブル内の値は、`wp-blog-header.php` 内の `$posts` 配列が取得された直後、`
$post_meta_cache` と呼ばれる多次元配列に格納されます。この変数は、要求されたページ
内に表示される記事に属する値のみが含まれています。配列の構造はこのようになってい
ます。

    ```wp-block-code
    [
    	postid1 => [
    		key1 => [ val1, val2, ... ],
    		key2 => [ val1, val2, ... ],
    		...
    	],
    	postid2 => [
    		key1 => [ val1, val2, ... ],
    		key2 => [ val1, val2, ... ],
    		...
    	],
    	...
    ]
    ```

つまり、ID 256の記事につけられた「今読んでいる本」のデータを取得したい場合、以下
のような PHP コードを使えばいいのです。

    ```wp-block-code
    // 今読んでいる本の配列値を取得
    $readinglist = $post_meta_cache[256]['今読んでいる本'];
    ```

**注:** `$readinglist` は1つの値ではなく配列となることに注意しましょう。
WordPress
2.1 以降では、`$post_meta_cache` にはデータが含まれません。メタデータの値は、以下
の方法で取得してください。

### PostMeta 関数

#### 内部関数

これらの関数は、[WordPress ループ](https://wpdocs.osdn.jp/%E3%83%AB%E3%83%BC%E3%83%97)
内で使うためのものです。すべての関数は配列を返します。

 * `**[get_post_custom()](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_post_custom)**`:
   現在の記事に関するメタデータの名前および値を取得。
 * `**[get_post_custom_keys()](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_post_custom_keys)**`:
   現在の記事につけられたすべてのメタデータの名前をリストとして取得。
 * `**[get_post_custom_values($key)](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_post_custom_values)**`:
   現在の記事中にあるメタデータの値を取得。
 * `**[get_post_meta($post_id, $key, $single = false)](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_post_meta)**`:
   WP 1.5以降で、キャッシュ関連の問題を起こすことなくメタデータを返します。この関数
   には `$post_id` と `$key` が必須で、`$single` が `TRUE` に設定されている場合、
   配列ではなく1つ目の結果のみを PHP で使用できるように返します。

    ```wp-block-code
    // 以下は、メタデータの値を出力します（echo があることに注目してください）
    <?php $key="メタデータの名前"; echo get_post_meta( $post->ID, $key, true ); ?>
    ```

#### テンプレート関数

WordPress テンプレートファイルでは投稿メタ関数を利用できます。例えば以下のとおり
です。

[`**the_meta()**`](https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/the_meta)**：
現在の記事のメタデータを順不同リストとして出力します。<ul> の CSS クラスは post-
meta、<li> は post-meta-key となります。**
`**<?php echo get_post_meta( $post->ID,'
key', true ); ?>**`テンプレートファイル内で使うと、1つの名前（キー）に対する値を
文字列として出力します。

## 詳細情報およびリソース

カスタムフィールドを管理するプラグインをインストールすることもできます。

 * [Meta Box plugin](https://ja.wordpress.org/plugins/meta-box/?output_format=md)–
   カスタムメタボックスとカスタムフィールドを作成できるプラグイン。
 * [Piklist](https://ja.wordpress.org/plugins/piklist/?output_format=md) – WordPress
   のあらゆる場所でカスタムメタボックスとフィールドを作成できるプラグイン。
 * [Advanced Custom Fields](https://ja.wordpress.org/plugins/advanced-custom-fields/?output_format=md)–
   ユーザーフレンドリーなインターフェースを使用して複雑なフィールドとレイアウトを
   作成できるプラグイン。

[原文](https://wordpress.org/documentation/article/assign-custom-fields/)

## この記事は役に立ちましたか ? どうすればさらに改善できますか ?

フィードバックを送信するには[ログイン](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fja.wordpress.org%2Fsupport%2Farticle%2Fcustom-fields%2F&locale=ja)
する必要があります。