• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

「カスタムフィールドの使い方」の版間の差分

提供: WordPress Codex 日本語版
移動先: 案内検索
(表記ゆれとリンク修正)
(HelpHub への転送を追加)
 
1行目: 1行目:
__TOC__
+
このページは https://ja.wordpress.org/support/article/custom-fields/ へ移動しました。
WordPress には、投稿者が投稿に「カスタムフィールド」を追加できる機能があります。この任意の情報は'''「メタデータ」'''と呼ばれており、たとえば以下のような情報を含めることができます。
+
 
+
* '''現在のムード:''' 幸せいっぱい
+
* '''今読んでいる本:''' 星の王子様
+
* '''BGM:''' Rock Around the Clock
+
* '''今日の天気:''' 晴れ
+
 
+
さらに、ちょっとしたコードを付け加えるだけで、このメタデータに投稿の表示期限を付け加えたりすることも可能です。
+
 
+
メタデータは'''「名前」'''と、その'''「値」'''の組み合わせからなっています。「名前」は、メタデータ要素の名称のことを指します。「値」は、その要素に対応する情報を指します。一般的には、固定された「名前」に対し、記事によって異なる「値」を記入します。
+
 
+
また、ひとつの記事で、複数のメタデータの名前を使用することもできます。例えば今読んでいる本が2冊ある場合、「今読んでいる本」という名前を2度使い、それぞれに対し1冊の本の題名を記入すればよいのです。
+
 
+
カスタムフィールドを記入した場合、記事中に以下のように表示できます。
+
 
+
<div class="example">
+
* '''今読んでいる本:''' 星の王子様
+
* '''今日の天気: 晴れ'''
+
</div>
+
 
+
== 関数リファレンス ==
+
 
+
{| cellspacing="10" width="100%"
+
|- valign="top"
+
| width="33%" |
+
 
+
{| cellspacing="10" style="border: 1px solid #ccc; border-collapse: collapse; width: 100%; clear: both; margin-bottom: 11px;"
+
|- style="background:#464646; color:#e2e2e2;font-size:110%;line-height:1.8em"
+
! '''追加、更新、削除'''
+
|-
+
|
+
* <tt>[[関数リファレンス/add post meta|add_post_meta()]]</tt>
+
* <tt>[[関数リファレンス/update_post_meta|update_post_meta()]]</tt>
+
* <tt>[[関数リファレンス/delete post meta|delete_post_meta()]]</tt>
+
|}
+
 
+
| width="33%" |
+
 
+
{| cellspacing="10" style="border: 1px solid #ccc; border-collapse: collapse; width: 100%; clear: both; margin-bottom: 11px;"
+
|- style="background:#464646; color:#e2e2e2;font-size:110%;line-height:1.8em"
+
! '''カスタムメタデータの名前・値を取得'''
+
|-
+
|
+
* <tt>[[関数リファレンス/get post custom|get_post_custom()]]</tt>
+
* <tt>[[関数リファレンス/get post custom values|get_post_custom_values()]]</tt>
+
* <tt>[[関数リファレンス/get post custom keys|get_post_custom_keys()]]</tt>
+
|}
+
 
+
| width="33%" |
+
 
+
{| cellspacing="10" style="border: 1px solid #ccc; border-collapse: collapse; width: 100%; clear: both; margin-bottom: 11px;"
+
|- style="background:#464646; color:#e2e2e2;font-size:110%;line-height:1.8em"
+
! '''テンプレートタグ'''
+
|-
+
|
+
* <tt>[[テンプレートタグ/the meta|the_meta()]]</tt>
+
* <tt>[[関数リファレンス/get post meta|get_post_meta()]]</tt>
+
|}
+
 
+
|}
+
 
+
==使い方==
+
[[Image:Custom-field-box.png|right|thumb|500px|カスタムフィールド記入ボックス]]
+
上記の例に基づいて、実際にカスタムフィールドを使ってみましょう。ここでは、「今読んでいる本」と、「今日の天気」というカスタムフィールドの値を追加します。
+
 
+
# 管理画面内の[[Posts_Add_New_SubPanel|記事投稿]]で「カスタムフィールド」ボックスへ移動します。<br>'''注:''' WordPress [[Version 3.1|バージョン 3.1]] より、投稿・固定ページでの管理画面[[管理画面#表示オプション|表示オプション]]の一部がデフォルトでは非表示になっています。カスタムフィールドも、以前使ったことがない場合はデフォルトで非表示になります。
+
# 新しいカスタムフィールドを作成するには、「名前」と書かれた下にある欄に書き込みます。まずはここに、「今読んでいる本」と書きましょう。
+
# 新規作成した名前に対応する値を追加します。今回の場合は、読んでいる本の題名になります。「値」と書かれた下にある欄に、「星の王子様」と書き込みます。
+
# ここまで終わったら、「カスタムフィールドを追加」ボタンをクリックしましょう。
+
<!-- [[File:custom_field_example.jpeg]] -->
+
# 「現在のムード」を追加するには、同じ手順を繰り返します。「現在のムード」を「名前」として追加し、ムードの説明を「値」というテキストボックスに記入して「カスタムフィールドを追加」ボタンをクリックしてください。
+
 
+
さらに「今日の天気」を追加するには上記のプロセスを繰り返します。最後に「保存」(または「公開」)ボタンをクリックして記事を保存します。
+
 
+
次に記事を投稿する際、別の本や天気をメタデータとして追加することができます。一度追加した名前は、カスタムフィールド記入エリア内にあるプルダウンメニューの項目として簡単に選択することができるようになります。
+
 
+
==カスタムフィールドを記事内に表示する==
+
 
+
カスタムフィールドを記事に追加したら、その情報をサイトで公開しましょう。各記事にカスタムフィールドを表示させるには、<tt>[[テンプレートタグ/the_meta|the_meta()</tt>]] テンプレートタグを使います。このタグは [[The_Loop|WordPress ループ]]内に置く必要があります。<tt>the_meta()</tt> テンプレートタグを記事の最初や最後の[[Post_Meta_Data_Section|記事メタデータセクション]]などに含めるという方法が良く使われます。以下が、一般的なタグの記入例です。
+
 
+
<?php the_meta(); ?>
+
 
+
上記の例の場合、ソースコードではこのように表示されているはずです。
+
 
+
<pre>&lt;ul class='post-meta'&gt;
+
&lt;li&gt;&lt;span class='post-meta-key'&gt;今読んでいる本: &lt;/span&gt; 星の王子様&lt;/li&gt;
+
&lt;li&gt;&lt;span class='post-meta-key'&gt;今日の天気:&lt;/span&gt; 晴れ&lt;/li&gt;
+
&lt;/ul&gt;</pre>
+
 
+
テンプレートタグは、メタデータを順不同リスト(<tt>&lt;ul&gt;</tt> )形式で出力し、そのリストに <tt>post-meta</tt> というクラスを自動的に割り当ててくれます。さらに名前は <tt>post-meta-key</tt> というクラスの <tt>&lt;span&gt;</tt> 要素に囲まれるので、スタイルシートを使って見た目を変更することができます。
+
 
+
カスタマイズするには、以下の宣言を使用中のテーマのスタイルシート(style.css)に追加します。
+
 
+
<pre>.post-meta {font-variant: small-caps; color: maroon; }
+
.post-meta-key {color: green; font-weight: bold; font-size: 110%; }</pre>
+
 
+
サイト上では、以下のように表示されます。
+
 
+
<div class="example">
+
* <span style="font-size:110%; color: green; font-weight:bold; font-variant: small-caps">今読んでいる本:</span> <span style="font-style:italic; color: maroon; font-variant: small-caps"> 星の王子様</span>
+
* <span style="font-size:110%; color: green; font-weight:bold; font-variant: small-caps">今日の天気:</span> <span style="font-style:italic; color: maroon; font-variant: small-caps"> 晴れ</span>
+
</div>
+
 
+
さらに、[http://wordpress.org/extend/plugin 公式プラグインディレクトリ]にはメタデータ表示に便利な機能を追加してくれるプラグインがいろいろとあります。[http://www.google.com/search?hl=en&q=custom+fields+plugin+wordpress&btnG=Google+Search カスタムフィールドプラグインの Google 検索] でさらに多くのプラグイン情報を見つけられるでしょう。
+
 
+
カスタム投稿タイプ内でカスタムフィールドの対応を登録するには、以下のように 'custom-fields' を使って 'supports' $args を追加してください。
+
 
+
<pre>
+
'supports' => array('title','editor','thumbnail','custom-fields')
+
</pre>
+
 
+
==カスタムフィールドを使ったさらに高度なテクニック==
+
 
+
以下はメタデータ/カスタムフィールドを利用したさらに高度なテクニックです。
+
 
+
===カスタムフィールドを取得する===
+
メタデータの値を取得するには、 <tt>[[関数リファレンス/get post meta|get_post_meta()]]</tt> 関数を使います。
+
 
+
  get_post_meta($post_id, $key, $single);
+
 
+
* <tt>$post_id</tt> は、メタデータの値を取得する記事のIDです。 <tt>$post->ID</tt> を使って記事のIDを取得してください。
+
* <tt>$key</tt> は取得する名前の文字列です。
+
* <tt>$single</tt> は <tt>true</tt> または <tt>false</tt> としてください。true に設定されている場合、結果を1つの文字列として返します。false の場合、カスタムフィールドの配列を返します。
+
 
+
====詳しいやり方====
+
PostMeta で取得された情報は新しいテーブル内に格納されます(<tt>$wpdb->postmeta</tt>)。このテーブルには4つのフィールドがあります。
+
 
+
:'<tt>meta_id</tt>' - 各メタデータ項目の固有 ID
+
:'<tt>post_id</tt>' - 取得したメタデータが属する記事の ID
+
:'<tt>meta_key</tt>' - メタデータの名前
+
:'<tt>meta_value</tt>' - メタデータの名前に対応する値
+
 
+
このテーブル内の値は、<tt>wp-blog-header.php</tt> 内の <tt>$posts</tt> 配列が取得された直後、<tt>$post_meta_cache</tt> と呼ばれる多次元配列に格納されます。この変数は、要求されたページ内に表示される記事に属する値のみが含まれています。配列の構造はこのようになっています。
+
 
+
[
+
postid1 => [
+
key1 => [ val1, val2, ... ],
+
key2 => [ val1, val2, ... ],
+
...
+
],
+
postid2 => [
+
key1 => [ val1, val2, ... ],
+
key2 => [ val1, val2, ... ],
+
...
+
],
+
...
+
]
+
 
+
つまり、ID 256の記事につけられた「今読んでいる本」のデータを取得したい場合、以下のような PHP コードを使えばいいのです。
+
 
+
  // 今読んでいる本の配列値を取得
+
  $readinglist = $post_meta_cache[256]['今読んでいる本'];
+
 
+
:'''注:''' <tt>$readinglist</tt> は1つの値ではなく配列となることに注意しましょう。
+
:WordPress 2.1 以降では、<tt>$post_meta_cache</tt> にはデータが含まれません。メタデータの値は、以下の方法で取得してください。
+
 
+
===PostMeta 関数===
+
 
+
====内部関数====
+
 
+
これらの関数は、[[The Loop|WordPress ループ]]内で使うためのものです。すべての関数は配列を返します。
+
 
+
* '''<tt>[[関数リファレンス/get post custom|get_post_custom()]]</tt>''': 現在の記事に関連するメタデータの名前および値を取得。
+
* '''<tt>[[関数リファレンス/get post custom keys|get_post_custom_keys()]]</tt>''': 現在の記事につけられたすべてのメタデータの名前をリストとして取得。
+
* '''<tt>[[関数リファレンス/get post custom values|get_post_custom_values($key)]]</tt>''': 現在の記事中にあるメタデータの値を取得。
+
* '''<tt>[[関数リファレンス/get post meta|get_post_meta($post_id, $key, $single = false)]]</tt>''': WP 1.5以降で、キャッシュ関連の問題を起こすことなくメタデータを返します。この関数には <tt>$post_id</tt> と <tt>$key</tt> が必須で、<tt>$single</tt>が TRUE に設定されている場合、配列ではなく、一つ目の結果のみをPHPで使用できるように返します。
+
 
+
<pre>// 以下は、メタデータの値を出力します(echo があることに注目してください)
+
<?php $key="メタデータの名前"; echo get_post_meta($post->ID, $key, true); ?></pre>
+
 
+
====テンプレート関数====
+
 
+
WordPress テンプレートファイルでは投稿メタ関数を利用できます。例えば以下の通りです。
+
 
+
;<tt>[[テンプレートタグ/the_meta|the_meta()]]</tt>: 現在の記事のメタデータを順不同リストとして出力します。<nowiki><ul></nowiki> の CSS クラスは post-meta、<nowiki><li></nowiki> は post-meta-key となります。
+
;<tt><?php echo get_post_meta($post->ID, 'key', true); ?></tt>: テンプレートファイル内で使うと、1つの名前(キー)に対する値を文字列として出力します。
+
 
+
 
+
=詳細情報およびリソース=
+
* [http://metabox.io Meta Box plugin]: Free plugin that allows you to create custom meta boxes and custom fields quickly with a lot of field types and options.
+
* [[http://wpsites.net/web-design/how-to-create-a-custom-field/  Video: Beginners guide to using get_post_meta in a custom function - Includes 2 methods]]
+
* [[https://ja.wordpress.org/plugins/custom-field-snippet/ Custom Field Snippet: This plugin creates snippets which outputs custom field data]]
+
 
+
 
+
{{原文|Using Custom Fields|152280}} <!-- 16:58, 15 June 2015‎ Wordpresssites  版 -->
+
 
+
{{DEFAULTSORT:かすたむふいいるとのつかいかた}}
+
[[Category:初心者向けトピック]]
+
[[Category:デザインとレイアウト]]
+
[[Category:WordPress レッスン]]
+
[[Category:上級トピック]]
+
 
+
[[en:Using Custom Fields]]
+
[[nl:Custom Fields]]
+
[[mk:Посебни Полиња]]
+
[[pt-br:Campos Personalizados]]
+
[[ru:Произвольные поля]]
+
[[zh-cn:自定义栏目]]
+

2019年11月10日 (日) 01:39時点における最新版

このページは https://ja.wordpress.org/support/article/custom-fields/ へ移動しました。