以下のコードで指定したポストのカスタムフィールドの値を全て表示する事が出来ました。
尚、最初の書き込みにあるキーの指定という部分は自分で解決しようと思います。
しかし、それとは別にどうしてもうまくいかない点が一つあります。
<?php
$post_id = 10;
$limit = 5;
$all_values = array();
$custom_fields = get_post_custom($post_id);
$custom_keys = get_post_custom_keys($post_id);
foreach ($custom_keys as $key) {
if ("_" != substr($key,0,1)) {
$values = $custom_fields[$key];
$all_values = array_merge($all_values,$values);
}
unset($key);
}
if ($all_values) {
$n = 0;
echo "\n" . '<ul>' . "\n";
foreach ($all_values as $key => $value) {
if ($n == $limit) break;
echo '<li>' . $key . '<br />' . $value . '</li>' . "\n";
$n++;
unset($all_values[$key]);
}
echo '</ul>' . "\n";
}
?>
echoで出力している$keyに、カスタムフィールドで最後に追加したキー名しか表示されず、値に紐付いた形で表示されないので、これをきちんとキーと値が紐付いた状態で表示させたいのです。
何か良い知恵がありましたらご教示下さい。
何をしたいのか、いま一つわかっていませんが、メタキーとその値(値は複数可)を対で表示したいだけなら、
<?php
$post_id = 10;
$custom_keys = get_post_custom_keys($post_id);
if ($custom_keys) {
echo "<ul>\n";
foreach ($custom_keys as $key) {
if ("_" != substr($key,0,1)) {
$values = get_post_custom_values($key);
$str_values = implode(",", $values);
echo '<li>' . $key . '<br />' . $str_values . '</li>' . "\n";
}
}
echo "<ul>\n";
}
?>
分かり辛くてすみません…。
提示して頂いた方法にも辿り着いてはいたのですが、キーに値が連なって表示されるのではなく、以下の様な形でキーと値を1:1のセットで表示して、尚且つ全ての値を出力したいのです。
<ul>
<li>キーと<br />その値</li>
<li>キーと<br />その値</li>
<li>キーと<br />その値</li>
</ul>
the_metaと似た様な表示結果ですが、表示件数の設定や表示するキーの指定、値だけを対象としたランダムな表示(ランダムに表示してもきちんとキーも対で表示される)など色々と細かな制御を加えたいので最初の様なコードになっていました。
提示して頂いたコードと同じものも最初は利用していたのですが、キーに連なる形なのでどうしてもキーごとに値が区切られてしまう点がネックとなって利用を止める結果になりました。
制御云々という点についてはphpの方を勉強をしていけば解決出来ると思うので良いのですが、このカスタムフィールドを上記の様な形で表示させる方法を求めています。
そんなに難しいことではないと思います。頑張ってください。
ありがとうございます。
もう少しで解決出来そうなので継続して頑張ってみようと思います。
尚、タイトルにある件については既に解決していますので、こちらのトピックは解決済みとします。