SYNCER

SYNCER

get_post_meta() - 指定したIDの投稿のメタデータを取得する

公開日:

get_post_meta()は、指定したIDの投稿に設定されている、カスタムフィールドなどのメタデータを取得する関数です。

構文

mixed get_post_meta( int $post_id, string $key = '', bool $single = false )

パラメータ

$post_id

投稿のIDを数値で指定する。

$key

初期値: ''

取得するカスタムフィールドのキー名。指定しない場合、全てのカスタムフィールドを取得する。

$single

初期値: false

通常、各カスタムフィールドの値は配列形式になっているが、第3引数でtrueを指定すると、文字列で返す。ケースによっては、取得した値をそのまま利用できる利点などがある。

返り値

mixed

キー名を指定した場合、そのキー名のメタデータを取得する。

第2引数でキー名を指定しなかった場合、投稿に紐付けられている全てのメタデータを含んだ配列を取得する。

第3引数でtrueを指定した場合、値は配列ではなく文字列で返る。

関数

この関数内で利用している、別のWordPress関数です。

  • get_metadata() - 指定したオブジェクトのコンテンツに紐付いたメタデータを取得する。

サンプルコード

全てのメタデータを取得

指定した記事(リンク)に紐付けられている全てのメタデータを取得します。

php

<?php
	// 実行
	$result = get_post_meta( 11 ) ;

	// 結果
	print_r( $result ) ;

結果 (出力内容) - PHP7.0.13

Array
(
    [_edit_last] => Array
        (
            [0] => 1
        )

    [_edit_lock] => Array
        (
            [0] => 1481696435:1
        )

    [enclosure] => Array
        (
            [0] => https://wp.syncer.jp/wp-content/uploads/2016/12/cute-dog.mp4
244970
video/mp4

        )

)

特定のメタデータを取得

指定した記事(リンク)に紐付けられている中から、キー名がenclosureのメタデータだけを取得します。

php

<?php
	// 実行
	$result = get_post_meta( 11, "enclosure" ) ;

	// 結果
	print_r( $result ) ;

結果 (出力内容) - PHP7.0.13

Array
(
    [0] => https://wp.syncer.jp/wp-content/uploads/2016/12/cute-dog.mp4
244970
video/mp4

)

文字列で取得

先ほどと同じメタデータですが、第3引数にtrueを指定することで、配列ではなく文字列で値を取得します。

php

<?php
	// 実行
	$result = get_post_meta( 11, "enclosure", true ) ;

	// 結果
	print_r( $result ) ;

結果 (出力内容) - PHP7.0.13

https://wp.syncer.jp/wp-content/uploads/2016/12/cute-dog.mp4
244970
video/mp4

ソースコード

wp-includes/post.php

/**
 * Retrieve post meta field for a post.
 *
 * @since 1.5.0
 *
 * @param int    $post_id Post ID.
 * @param string $key     Optional. The meta key to retrieve. By default, returns
 *                        data for all keys. Default empty.
 * @param bool   $single  Optional. Whether to return a single value. Default false.
 * @return mixed Will be an array if $single is false. Will be value of meta data
 *               field if $single is true.
 */
function get_post_meta( $post_id, $key = '', $single = false ) {
	return get_metadata('post', $post_id, $key, $single);
}

参考リンク