Web 制作のことを中心に、ちょっとした Tips などを掲載しています。「自分用メモ」が基本スタンス。

btmup Blog

WordPress

カスタムフィールドの指定したキーの値だけ表示する方法

投稿日:

カスタムフィールドに入力した値を出力するには、

<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
<?php the_meta(); ?>
<?php endwhile; endif; ?>

というテンプレートタグを使うのが最も基本的な方法です。
ただ、これだと入力したすべてのキーと値が一つの<ul>リストで出力されてしまい、使い勝手が良いとは言えません。

指定したキーの値を個別に出力できればなぁ……、と思っていろいろ調べた結果、実は別の関数を使えば簡単に出来ちゃうことが分かりました。
手元にある本のうち1冊にだけ載ってたような情報で、改めてググってみてもほとんど見つからず。
ってことは意外に知られていない方法なのかも。
(get_post_meta() 関数を使うのが本来の方法だというような気がしないでもないですが、より簡単に使える方が良いだろうということで)

post_custom() 関数を使う

指定したキーの値だけを出力するには、post_custom() を使います。

指定したキーに対して入力した値が1つだけの場合

post_custom() で取得できる値は文字列になります。

<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
<?php echo post_custom('key'); ?>
<?php endwhile; endif; ?>

取得した値(文字列)を echo で出力しています。

指定したキーに対して入力した値が複数ある場合

post_custom() で取得できる値はPHPの配列になります。

<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
<?php
$mywords = post_custom('key');
foreach ($mywords as $myword) {
	echo $myword;
} ?>
<?php endwhile; endif; ?>

まず $mywords で配列を受けて、foreach 文で$myword に小分けにしながら echo で出力しています。

参考書籍

上記の基本形の他に、「キーと値をPHPで扱う」方法なども載っていますので、興味のある方はご一読を。

実用例が豊富だったり、各関数が取得するデータを具体的に書いてあったり、何かと便利で分かりやすい本です。

雑記

WordPress Codex 日本語版で「post_custom」を検索してもヒットしないのですが、まさか非推奨とかではないよなぁ……?

WordPress Codex 日本語版 - カスタムフィールドの使い方にも get_post_meta() 関数のことしか書いてないし。

謎。




-WordPress
-,

Copyright© btmup Blog , 2019 All Rights Reserved Powered by AFFINGER5.