【WordPress・カスタムフィールド】値・キーを取得して表示/値の更新など

WordPress では、投稿や固定ページなどで「タイトル」や「本文」などの項目の他に、カスタムフィールドを使用することで、任意に項目を追加することが出来ます。

今回は、そのカスタムフィールドを扱うの関数の中で、個人的によく使用する関数をまとめました。

また、カスタムフィールドといえばプラグイン『Advanced Custom Fields』が有名ですが、そのプラグインでカスタムフィールドを管理している際に利用できる関数のまとめは、以下のリンクを参考にしてみてください。

get_post_meta()

get_post_meta関数は、パラメータで指定したカスタムフィールドの値を取得します。

以下はソースコードの例となり、カスタムフィールドの値を出力したい箇所に記述します。

「キー名」を指定して「値」を取得

以下の例では、現在の投稿にカスタムフィールドのキー名「sample_field」の値があれば、その値を出力します。

<?php
$value = get_post_meta( get_the_ID(), 'sample_field', true );
if( $value ){ 
    echo $value;
}
?>

パラメータについて

以下は、get_post_meta関数のパラメータとなります。

get_post_meta( $post_id, $key, $single );
$post_id(必須)
 カスタムフィールドの値を取得したい投稿のIDを指定。
$key(省略可)
取得したいカスタムフィールドのキー名(フィールド名)を指定。省略した場合はすべてのキー名の値を配列として返します。初期値は、''
$single(省略可)
true を指定した場合は、指定されたキーを持つ最初の値を返します。false または値を省略した場合は、指定されたキーを持つすべての値を配列で返します。初期値は、false

※$post_idのパラメータ だけを指定した場合には、その投稿に設定されているすべてのカスタムフィールドの値を配列として返します。

get_post_custom()

get_post_custom関数は、指定したページのカスタムフィールドのキー名と値を配列ですべて取得します。

この関数は、カスタムフィールドの値に単一の値が格納されている場合でも、配列の配列(多次元の配列)を返します。カスタムフィールドの値に配列が格納されている場合には、シリアライズされた値を返します。

以下はソースコードの例となり、カスタムフィールドの情報を出力したい箇所に記述します。

「キー名」と「値」をすべて取得

以下の例では、現在の投稿にカスタムフィールドの情報があれば、すべてのキー名と値を出力します。また、値が複数ある場合には最初の値を出力します。

<?php
// すべてのカスタムフィールドの情報を配列で取得
$fields = get_post_custom();

if($fields){
	echo "<ul>";
	foreach ( $fields as $key => $value ) {
    	// _(アンダースコア)から始まるキー名以外の場合
		if(!(preg_match( "/^_/", $key ))){ 
        // キー名と、キー名とセットになる最初の値を取得
        echo "<li>" .$key . "は" . $value[0] . "</li>"; 
		}
	}
	echo "</ul>";
}
?>

なお、カスタムフィールドには、_(アンダースコア)から始まるキー名もあるのですが、そのカスタムフィールドは、WordPressの管理画面では表示されていません。

get_post_custom関数では、そのようなカスタムフィールドの値も出力されてしまうため、今回の例では_(アンダースコア)から始まるキー名を正規表現で除外してあります。

※_(アンダースコア)から始まるキー名は、デフォルトで設定されているものや、カスタムフィールドを追加できるadd post meta関数などで作成できます。

パラメータについて

以下は、get_post_custom関数のパラメータとなります。

get_post_custom( $post_id );
$post_id(省略可)
 取得したいカスタムフィールドの投稿のIDを指定。省略した場合は現在の投稿。

update_post_meta()|値を更新

update_post_meta関数は、パラメータで指定したカスタムフィールドの値を更新します。

パラメータについて

以下は、update_post_meta関数のパラメータとなります。

update_post_meta( $post_id, $meta_key, $meta_value, $prev_value );
$post_id(必須)
カスタムフィールドを更新する投稿の IDを指定。
$meta_key(必須)
更新するカスタムフィールドのキー名(フィールド名)を指定。
$meta_value(必須)
更新するカスタムフィールドの新しい値を指定。配列を指定するとシリアライズされて格納されます。
$prev_value(省略可)
更新したいカスタムフィールドの元の値を指定することで、その値のみ更新ができます。省略すると、パラメータ$meta_key で指定したキー名を持つすべての値が更新されます。

その他にもカスタムフィールド関連の関数はあります。他の関数については、以下の参照サイトを参考にしてみてください。

セキュリティ対策として出力をエスケープ処理

また、今回の例では行っていませんが、セキュリティ対策として、カスタムフィールドのデータを出力する際に、データによってはエスケープ処理をします。

エスケープ処理については、以下のリンク先を参考にしてみてください。

データ検証 - WordPress Codex 日本語版

参照サイト・書籍

コメントまたはTwitterで返信

コメントは、以下の項目(*は必須項目)を入力し「コメントを送信」ボタンから送信お願いします。メールアドレスは公開されることはありません。Twitterで返信する場合はコチラから。