Top > WordPress > カスタムフィールド [全て閉じる]
2011年2月 3日

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

February 3,2011 1:55 AM
Tag:[, ]
Permalink

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.参考サイト

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

Comments [0] | Trackbacks [0]
Now loading...
Introduction
List of "カスタムフィールド"
Recent Entries
Recent Comments
Recent Trackbacks
QRcode

現在停止中です
携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site
loading ...
Categories
Monthly Archives
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 5.12