WordPressでカスタムフィールドを出力する方法のまとめ

WordPressでカスタムフィールドを出力する方法のまとめ

Posted at February 3,2011 1:55 AM
Tag:[CustomField, WordPress]

WordPressでカスタムフィールドの出力方法についていろいろ調べてみました。

カスタムフィールド

大丈夫と思いますが、以下に示すサンプルは次のようなループタグの中で使ってください。

<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
ここにサンプルコードを挿入
<?php endwhile; endif; ?>

1.値を出力する(キーと値が1:1の場合)

キーと値が1:1の場合、値を出力するにはpost_custom()を使います。

<?php echo post_custom($key); ?>

冒頭の画像の「サイズ」の値「3000」を出力するには次のように記述します。

<?php echo post_custom('サイズ'); ?>

2.値を出力する1(キーと値が1:nの場合)

WordPressではひとつのキーに複数の値を記述することができます。

キーと値の対応が1:nの場合、値を出力するにはpost_custom()を使います。

<?php
$values = post_custom($key);
foreach ($values as $value) {
    echo $value;
} ?>

画像の「価格」の値「10000」「3000」をまとめて出力するには、次のように記述します。

<?php
$values = post_custom('価格');
foreach ($values as $value) {
    echo $value;
} ?>

3.値を出力する2(キーと値が1:nの場合)

キーと値の対応が1:nの場合、get_post_custom()を使う方法もあります。

<?php
$list = get_post_custom();
$values = $list[$key];
foreach ($values as $value) {
    echo $value;
}
?>

2項の「価格」の値を出力するには次のように記述します。

<?php
$list = get_post_custom();
$values = $list['価格'];
foreach ($values as $value) {
    echo $value;
}
?>

ちなみにpost_custom()はget_post_custom()をラップしているので、post_custom()を使った方が良いでしょう。

4.キーと値を出力する1

キーと値をまとめて出力するには、get_post_custom_keys()とget_post_custom_values()を組み合わせます。

<?php
$keys = get_post_custom_keys();
foreach ( (array) $keys as $key ) {
    $keyt = trim($key);
    if ( '_' == $keyt{0} )
        continue;
    $values = get_post_custom_values($key);
    $value = implode($values,', ');
    echo $key . " " . $value;
}
?>

get_post_custom_keys()は、カスタムフィールドのキーのリストを取得する関数です。パラメータに記事IDを指定すれば特定の記事のカスタムフィールドのキーのリストを取得できます。

get_post_custom_keys($post->ID);

trim関数でキーの先頭文字がアンダースコア「_」のものはスキップするようにしています。これはカスタムフィールドのキーの先頭に「_」が付与されたものは非表示のメタ情報として使用されているためです。カスタムフィールドのキーの先頭にアンダースコアをつけて入力すると管理画面には何も表示されませんが、データは保存されています。

    $keyt = trim($key);
    if ( '_' == $keyt{0} )
        continue;

get_post_custom_keys()は、カスタムフィールドの値のリストを取得する関数です。パラメータに記事IDを指定すれば、特定の記事のカスタムフィールドの値のリストを取得できます。

get_post_custom_values($key, $post->ID);

また、キーに対応する値が複数あるものはimplode関数(Perlでいうjoin)を使ってカンマで区切って出力するようにしています。

    $value = implode($values,', ');

この部分はforeach文による出力をするなど、適宜書き換えてください。

5.キーと値を出力する2

キーと値を出力する簡単な方法は、the_meta()を使用します。

<?php the_meta(); ?>

この関数を利用すれば、次のような順不同リストを出力します。

<ul class='post-meta'>
<li><span class='post-meta-key'>サイズ: </span> M</li>
<li><span class='post-meta-key'>価格:</span> 3000</li>
</ul>

6.特定の記事と特定のキーからカスタムフィールドの値を取得

特定の記事と特定のキーからカスタムフィールドの値を取得する場合、get_post_meta()を使用します。

<?php echo  get_post_meta($post_id, $key, $single); ?>

記事テンプレートの中であれば次のように記述します。なお$keyに日本語を設定しても正常に取得できないようです。第3パラメータ$singleをtrueにすれば、キーと値の対応が1:nの場合、一番最初のデータを取得します。

<?php echo get_post_meta($post->ID, 'aaa', true); ?>

falseを設定すればリストを取得します。リストの場合は次のようにすれば出力できます。

<?php echo implode(get_post_meta($post->ID, 'aaa', false),', '); ?>

7.参考サイト

参考サイトは以下です。ありがとうございました。

関連記事
zenback
人気エントリー
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)