| ブログトップ | CMS関連 | PHP関連 |

入力フィールドを複数追加できるタイプのカスタムフィールドを扱う際の注意点

Custom Field Templateプラグインを使用すると、投稿時に入力フィールドを任意に増やせるカスタムフィールドを作ることが出来ます。

↓こういうの

WS000013

追加ボタンを押すことで、フィールドを増やしていけるわけですが、入力はともかく、取り出し方には注意が必要です。

通常、カスタムフィールドを取り出す場合

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

$post_id:投稿ID
$key:カスタムフィールド名
$single:取得方法。配列ならfalse、1つめだけならtrue

というふうに取り出すのですが、これで取り出すと、複数フィールドの並び順がばらばらで取得されてしまいます。

しかも投稿を編集するたびに並び順が変わるという困った状態に。

なぜ上から順に取り出してくれない・・・

ということで、検索したところ、こちらの方法で解決しました。

Custom Field Template(カスタムフィールドテンプレート) | WordPress 編

複数フィールドを上から順に取り出す場合はsqlをつかって取り出します。

複数フィールドのカスタムフィールド名が「Hoge」とした場合


<?php
global $wpdb;
$query = "SELECT * FROM ".$wpdb->postmeta." WHERE post_id = ".get_the_ID()." AND meta_key = 'Hoge' ORDER BY meta_id ASC";
$cf = $wpdb->get_results($query, ARRAY_A);

$Hoge = array();
if($cf){
foreach($cf as $row){
$Hoge[] = $row['meta_value'];
}
}
?>

これで複数フィールドの並び順(meta_id)順でデータを取得することができます。

日々の生活にhappyをプラスする|ハピタス

このエントリーをはてなブックマークに追加

LINEで送る

nandani | 2013年05月18日 | コメント(0) | トラックバック(0) | CMS関連 | PHP関連

トラックバック

トラックバックURL

コメントする

※メールアドレスが公開されることはありません。

名前 *
メール*
URL
Copyright(c) 2010 - 2017 ダリの雑記