【WordPress】カスタムフィールドの名前を指定して、重複なく全ての値を取得する(プラグインなし)

今回は、カスタムフィールドの名前を引数として、重複なく全ての値を取得する関数を作成しました。

1次元配列で値が返却されます。

カスタムフィールドについて

カスタムフィールドを使うことにより、記事に追加情報を付与することが出来ます。

例えば、各記事に「価格」という名前を用意して、値を設定したとします。

これにより、カスタムフィールドを利用した検索フォーム等で

  • 「価格」を基準にして記事を並び替える
  • 「価格」をもとに検索を行う

といったことが出来ます。

関数

カスタムフィールドの値を取得する関数を以下のように作成しました。

  • 引数  $meta_key…カスタムフィールドの任意の名前
  • 返却値 $meta_value…$meta_keyに準ずる値(1次元配列、重複無)
function my_meta_value( $meta_key='' ){
	
	if( empty($meta_key) )
		return;
	
	global $wpdb;
	$meta_value = $wpdb->get_col($wpdb->prepare(
		"SELECT DISTINCT meta_value from {$wpdb->postmeta} WHERE meta_key = '$meta_key';",null)
								);
	return($meta_value);
}

使用例

各記事に以下のようにカスタムフィールドを設定したとします。

※はちゃめちゃに見えますが、商品をパンと見立ててカスタムフィールドを設定してます笑

カスタムフィールド

ここから、「塗るもの」の値を取得するには、以下のように記述します。

$meta_value = my_meta_value('塗るもの');

print_rで確認すると、以下のように表示されます。

出力結果

終わりに

簡単な関数で実行できますのでぜひお試しください。

また、修正点等あればご指摘いただけると嬉しいです!