当サイト、Codex 日本語版は今後積極的な更新は行わない予定です。後継となる新ユーザーマニュアルは、https://ja.wordpress.org/support/ にあります。
万が一、当サイトで重大な問題を発見した際などは、フォーラムWordSlack #docs チャンネルでお知らせください。</p>

「関数リファレンス/get post meta」の版間の差分

提供: WordPress Codex 日本語版
移動先: 案内検索
(最新版に内容を合わせました。)
(参考: 誤記訂正。)
 
(3人の利用者による、間の5版が非表示)
1行目: 1行目:
 
==概要==
 
==概要==
  
この関数は特定の投稿の特定のキーからカスタムフィールドの値を取得します。全てのカスタムフィールド値を返すためには、[[関数リファレンス/get_post_custom|get_post_custom()]]を参照してください。[[関数リファレンス/update post meta|update_post_meta()]]や[[関数リファレンス/delete post meta|delete_post_meta()]]、[[関数リファレンス/add post meta|add_post_meta()]]も参照してください。
+
この関数は特定の投稿の特定のキーからカスタムフィールドの値を取得します。すべてのカスタムフィールド値を取得するには [[関数リファレンス/get_post_custom|get_post_custom()]] を使うとよいでしょう。[[関数リファレンス/update post meta|update_post_meta()]] や [[関数リファレンス/delete post meta|delete_post_meta()]]、[[関数リファレンス/add post meta|add_post_meta()]]も参照してください。
  
==使用法==
+
== 使い方 ==
  
<pre>
+
<?php $meta_values = get_post_meta($post_id, $key, $single); ?>
&lt;?php $meta_values = get_post_meta($post_id, $key, $single); ?&gt;
+
</pre>
+
 
+
もしデータベースの照合順序が大文字小文字を区別する (<tt>suffix_ci</tt>を持つ) 場合、<tt>update_post_meta、delete_post_meta、get_post</tt>は大文字または小文字のメタレコードをupdate/delete/queryします。しかし<tt>get_post_meta</tt>は大文字小文字を区別するようです。これはWordPressのキャッシュに依るものです。詳しくは https://core.trac.wordpress.org/ticket/18210 を参照してください。大文字小文字を混ぜぬよう、気をつけてください。
+
  
 
==パラメータ==
 
==パラメータ==
  
{{Parameter|$post_id|integer|データを取得したい投稿のID。<tt>The Loop</tt>の投稿のIDを取得するには<tt>get_the_ID()</tt>を、サブループの投稿オブジェクトIDプロパティ (例: <tt>$my_post_object->ID</tt>) を使用してください。グローバルの<tt>$post</tt>オブジェクトIDプロパティ(例: <tt>$post->ID</tt>)を使うこともできますが、常に欲しかった結果が得られるとは限りません。}}
+
{{Parameter|$post_id|整数|カスタムフィールドを取得したい投稿の ID。[[ループ]]内で投稿の ID を取得するには <tt>get_the_ID()</tt> を、サブループ内では投稿オブジェクトの ID プロパティ(例: <tt>$my_post_object->ID</tt>)を使用してください。グローバルの <tt>$post</tt> オブジェクトの ID プロパティ(例: <tt>$post->ID</tt>)を使うこともできますが、これは常にあなたが意図したものとは限りません。}}
{{Parameter|$key|string|取得したい値のキー名の文字列。}}
+
{{Parameter|$key|文字列|取得したい値のキー名の文字列。|オプション|<nowiki>''</nowiki>}}
{{Parameter|$single|boolean|trueにセットした場合、'''文字列'''として単一の結果を返します。falseまたは値をセットしなかった場合、関数はカスタムフィールドの'''配列'''を返します。これはシリアル化された文字列としてはあまり直感的ではありません。たとえば、このメソッドでシリアル化された配列を取得した場合、$singleをtrueに設定すると非シリアル化された配列が戻ってきます。falseまたは値をセットしなかった場合、一つの要素からなる配列が返ってきて、インデックス0の値はシリアル化された文字列となります。|オプション|false}}
+
{{Parameter|$single|真偽値|true をセットした場合、'''文字列'''として単一の結果を返します。false または値をセットしなかった場合、関数はカスタムフィールドの'''配列'''を返します。これは、配列がシリアル化された文字列として格納されている場合、あまり直感的ではありません。例えば、この関数でシリアル化された配列を取得した場合、<tt>$single</tt> を true にセットすると非シリアル化された配列が返されます。false または 値をセットしなかった場合、一つの要素からなる配列が返ってきて、インデックス 0 の値はシリアル化された文字列となります。|オプション|false}}
  
 
==戻り値==
 
==戻り値==
  
* <tt>$id</tt>だけが設定されている場合、関係する配列の全てのメタ値を返します。
+
* <tt>$id</tt> だけが設定されている場合、その投稿に関するすべてのカスタムフィールドの値を配列として返します。
* <tt>$single</tt>が<tt>false</tt>に設定されているか、何も設定しなかった場合、関数は指定したキーを持つ全ての値からなる配列を返します。
+
* <tt>$single</tt> が <tt>false</tt> に設定されているか、何も設定しなかった場合、関数は指定したキーを持つすべての値からなる配列を返します。
* <tt>$single</tt>が<tt>true</tt>に設定された場合、関数は指定されたキーを持つ最初の値を返します(配列ではありません)。
+
* <tt>$single</tt> が <tt>true</tt> に設定された場合、関数は指定されたキーを持つ最初の値を返します(配列ではありません)。
もしも関数が返す値がなかった場合、'''空の配列'''を返します。<tt>$single</tt>が<tt>true</tt>に設定されていた場合、'''空の文字列'''を返します。
+
* もしも関数が返す値がなかった場合、'''空の配列'''を返します。<tt>$single</tt> が <tt>true</tt> に設定されていた場合、'''空の文字列'''を返します。
  
==使用例==
+
== 用例 ==
  
 
===デフォルトでの使用===
 
===デフォルトでの使用===
全てのキー値を取得する:
+
全てのキーから値を取得する:
 
<pre>
 
<pre>
&lt;?php $meta = get_post_meta( get_the_ID() ); ?&gt;
+
<?php $meta = get_post_meta( get_the_ID() ); ?>
 
</pre>
 
</pre>
  
一つのキー値だけを取得する:
+
一つのキーから値を取得する:
 
<pre>
 
<pre>
&lt;php $key_1_value = get_post_meta(76, 'key_1', true); ?&gt;
+
<?php $key_1_value = get_post_meta( 76, 'key_1', true ); ?>
 
</pre>
 
</pre>
  
===ループ内の与えられたキーの最初の値だけを取得する===
+
===ループ内で、与えられたキーの最初の値だけを取得する===
 
<pre>
 
<pre>
&lt;?php  
+
<?php  
 
$key_1_value = get_post_meta( get_the_ID(), 'key_1', true );
 
$key_1_value = get_post_meta( get_the_ID(), 'key_1', true );
// check if the custom field has a value
+
// カスタムフィールドが値を持つかチェック
if( ! empty( $key_1_value ) ) {
+
if ( ! empty( $key_1_value ) ) {
 
   echo $key_1_value;
 
   echo $key_1_value;
 
}  
 
}  
?&gt;
+
?>
 
</pre>
 
</pre>
  
より詳しい例は、[[関数リファレンス/post meta Function Examples|post_meta関数例]]を参照してください。
+
より詳しい例は、[[関数リファレンス/post_meta_Function_Examples|post_meta 関数の例]] /[[:en:Function_Reference/post_meta_Function_Examples|en]] を参照してください。
  
===カスタムフィールドのサムネイルURLを取得する===
+
===カスタムフィールドからサムネイル URL を取得する===
[[The_Loop|WordPressループ]]の中では、このコードを用いてカスタムフィールドを取得します。この例では、サムネイルイメージのURLが"thumb"という名でカスタムフィールドにあります。
+
[[The_Loop|WordPress ループ]]の中では、次のようなコードを用いてカスタムフィールドを取得します。この例では、サムネイルイメージの URL が「thumb」という名でカスタムフィールドにあります。
 
<pre>
 
<pre>
&lt;?php if ( get_post_meta( get_the_ID(), 'thumb', true ) ) : ?&gt;
+
<?php if ( get_post_meta( get_the_ID(), 'thumb', true ) ) : ?>
     &lt;a href="&lt;?php the_permalink() ?&gt;" rel="bookmark"&gt;
+
     <a href="<?php the_permalink() ?>" rel="bookmark">
         &lt;img class="thumb" src="&lt;?php echo get_post_meta( get_the_ID(), 'thumb', true ) ?&gt;" alt="&lt;?php the_title(); ?&gt;" /&gt;
+
         <img class="thumb" src="<?php echo get_post_meta( get_the_ID(), 'thumb', true ) ?>" alt="<?php the_title(); ?>" />
     &lt;/a&gt;
+
     </a>
&lt;?php endif; ?&gt;
+
<?php endif; ?>
 
</pre>
 
</pre>
 +
 +
== 参考 ==
 +
 +
* もしデータベースの照合順序が大文字小文字を区別しない(照合順序名に <tt>_ci</tt> が付く)場合、<tt>update_post_meta()</tt>、<tt>delete_post_meta()</tt>、<tt>[[テンプレートタグ/get_posts|get_posts()]]</tt> は大文字と小文字のキーを区別せずに、レコードを更新・削除・クエリします。しかし <tt>get_post_meta()</tt> は大文字・小文字を区別する場合があります。これは WordPress のキャッシュによるものです。詳しくは https://core.trac.wordpress.org/ticket/18210 を参照してください。大文字・小文字を混ぜないよう、気をつけてください。
 +
 +
* 内部で [[関数リファレンス/get_metadata|get_metadata()]] を使ってカスタムフィールドを取得します。
 +
 +
== 更新履歴 ==
 +
 +
* 新規導入: 1.5.0
  
 
==ソースコード==
 
==ソースコード==
<tt>get_post_meta()</tt>は{{BrowseSource|wp-includes/post.php}} にあります。
+
<tt>get_post_meta()</tt> は {{BrowseSource|wp-includes/post.php}} にあります。
  
 
==関係する関数==
 
==関係する関数==
67行目: 73行目:
 
{{Post Meta Tags}}
 
{{Post Meta Tags}}
  
{{原文|Function_Reference/get_post_meta|132204}}<!-- 12:42, 17 June 2013 Skaramicke 版 -->
+
{{原文|Function_Reference/get_post_meta|132204}} <!-- 12:42, 17 June 2013 Skaramicke 版 -->
  
 +
{{DEFAULTSORT:Get_post_meta}}
 
[[Category:関数]]
 
[[Category:関数]]
  
 
[[en:Function_Reference/get_post_meta]]
 
[[en:Function_Reference/get_post_meta]]

2021年1月24日 (日) 00:29時点における最新版

概要

この関数は特定の投稿の特定のキーからカスタムフィールドの値を取得します。すべてのカスタムフィールド値を取得するには get_post_custom() を使うとよいでしょう。update_post_meta()delete_post_meta()add_post_meta()も参照してください。

使い方

<?php $meta_values = get_post_meta($post_id, $key, $single); ?>

パラメータ

$post_id
整数) (必須) カスタムフィールドを取得したい投稿の ID。ループ内で投稿の ID を取得するには get_the_ID() を、サブループ内では投稿オブジェクトの ID プロパティ(例: $my_post_object->ID)を使用してください。グローバルの $post オブジェクトの ID プロパティ(例: $post->ID)を使うこともできますが、これは常にあなたが意図したものとは限りません。
初期値: なし
$key
文字列) (オプション) 取得したい値のキー名の文字列。
初期値: ''
$single
真偽値) (オプション) true をセットした場合、文字列として単一の結果を返します。false または値をセットしなかった場合、関数はカスタムフィールドの配列を返します。これは、配列がシリアル化された文字列として格納されている場合、あまり直感的ではありません。例えば、この関数でシリアル化された配列を取得した場合、$single を true にセットすると非シリアル化された配列が返されます。false または 値をセットしなかった場合、一つの要素からなる配列が返ってきて、インデックス 0 の値はシリアル化された文字列となります。
初期値: false

戻り値

  • $id だけが設定されている場合、その投稿に関するすべてのカスタムフィールドの値を配列として返します。
  • $singlefalse に設定されているか、何も設定しなかった場合、関数は指定したキーを持つすべての値からなる配列を返します。
  • $singletrue に設定された場合、関数は指定されたキーを持つ最初の値を返します(配列ではありません)。
  • もしも関数が返す値がなかった場合、空の配列を返します。$singletrue に設定されていた場合、空の文字列を返します。

用例

デフォルトでの使用

全てのキーから値を取得する:

<?php $meta = get_post_meta( get_the_ID() ); ?>

一つのキーから値を取得する:

<?php $key_1_value = get_post_meta( 76, 'key_1', true ); ?>

ループ内で、与えられたキーの最初の値だけを取得する

<?php 
$key_1_value = get_post_meta( get_the_ID(), 'key_1', true );
// カスタムフィールドが値を持つかチェック
if ( ! empty( $key_1_value ) ) {
  echo $key_1_value;
} 
?>

より詳しい例は、post_meta 関数の例 /en を参照してください。

カスタムフィールドからサムネイル URL を取得する

WordPress ループの中では、次のようなコードを用いてカスタムフィールドを取得します。この例では、サムネイルイメージの URL が「thumb」という名でカスタムフィールドにあります。

<?php if ( get_post_meta( get_the_ID(), 'thumb', true ) ) : ?>
    <a href="<?php the_permalink() ?>" rel="bookmark">
        <img class="thumb" src="<?php echo get_post_meta( get_the_ID(), 'thumb', true ) ?>" alt="<?php the_title(); ?>" />
    </a>
<?php endif; ?>

参考

  • もしデータベースの照合順序が大文字小文字を区別しない(照合順序名に _ci が付く)場合、update_post_meta()delete_post_meta()get_posts() は大文字と小文字のキーを区別せずに、レコードを更新・削除・クエリします。しかし get_post_meta() は大文字・小文字を区別する場合があります。これは WordPress のキャッシュによるものです。詳しくは https://core.trac.wordpress.org/ticket/18210 を参照してください。大文字・小文字を混ぜないよう、気をつけてください。
  • 内部で get_metadata() を使ってカスタムフィールドを取得します。

更新履歴

  • 新規導入: 1.5.0

ソースコード

get_post_meta()wp-includes/post.php にあります。

関係する関数

カスタムフィールド: the_meta(), get_post_meta(), add_post_meta(), update_post_meta(), delete_post_meta(), get_post_custom(), get_post_custom_values(), get_post_custom_keys() (post_meta 関数の例 /en も参照)


最新英語版: WordPress Codex » Function_Reference/get_post_meta最新版との差分