| cakePHP2.x系をレンタルサーバで運用する祭の注意点ブログトップ | CMS関連 | PHP関連 | IE9でドロップシャドウ(box-shadow)が効かない
入力フィールドを複数追加できるタイプのカスタムフィールドを扱う際の注意点
この記事は1年以上前の記事のため、内容が古い可能性があります。
Custom Field Templateプラグインを使用すると、投稿時に入力フィールドを任意に増やせるカスタムフィールドを作ることが出来ます。
↓こういうの
追加ボタンを押すことで、フィールドを増やしていけるわけですが、入力はともかく、取り出し方には注意が必要です。
通常、カスタムフィールドを取り出す場合
<?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)順でデータを取得することができます。
トラックバック
トラックバックURL
コメントする
※メールアドレスが公開されることはありません。