【Custom Field Template】multipleを設定したfieldsetにおいてチェックボックを使う
-
いつもお世話になっております。
Custom Field Templateでmultipleを設定したfieldsetにおいて
チェックボックを使用したいと思っています。まず、
[解決済み] Custom Field Templateグループ化時、バラバラに表示されてしまう
を参考に■カスタムフィールドテンプレート
[field0] type = fieldset_open legend = テスト multiple = true multipleButton = true [画像] type = file mediaLibrary = true relation = true blank = true [商品名] type = text size = 80 blank = true [商品説明文] type = textarea rows = 7 cols = 70 blank = true [field0] type = fieldset_close
■テンプレート
//DBからデータ取得。 //$wpdb->postmeta カスタムフィールドのキーと値が保存されているテーブル global $wpdb; $query = "SELECT meta_id,post_id,meta_key,meta_value FROM $wpdb->postmeta WHERE post_id = $post->ID ORDER BY meta_id ASC"; $cf = $wpdb->get_results($query, ARRAY_A); $pics = array(); $item = array(); $desc = array(); foreach( $cf as $row ){ if( $row['meta_key'] == "画像" ){ array_push( $pics, $row['meta_value'] ); } if( $row['meta_key'] == "商品名" ){ array_push( $item, $row['meta_value'] ); } if( $row['meta_key'] == "商品説明文" ){ array_push( $desc, $row['meta_value'] ); } } $length = count( $pics ); //表示 for( $i = 0; $i < $length; $i ++ ){ echo '<div class="food">'; echo '<h3>' . $item[$i] . '</h3>'; echo '<p>' . wp_get_attachment_image( $pics[$i] ) . '<br />'; echo $desc[$i] . '</p>'; echo '<hr />'; echo '</div>'; }
を設定し、上記の表示はうまくいきました。
次に、
[対象年齢] type=checkbox value = 10代#20代#30代#40代 blank = true
を[field0]内へ加えたカスタムフィールドテンプレートへ制作し
他の項目と同じ様に変数等を変えて読み込もとしたのですが、
チェックボックスで複数にチェックを入れた場合もそのうちの一つしか表示されませんでした。こちらのサイト(WordPress:カスタムフィールドを上手に使いこなす方法)
の記述2.3 配列を受け取る方法
値をチェックボックスで選択させる場合、配列で受け取る必要があります。
配列を受け取る時は以下のように記述します。<?php $ary = get_post_meta($post->ID,'keyの値', false); $n = count($ary); if ($n==0) echo ""; else for ($i=0;$i<$n;$i++) echo "$ary[$i] "; ?>
を見ると、変数の設定や表示部分を変更しなくてはいけないようなのですが
どのように記述してよいのか分かりません。見よう見まねで
//DBからデータ取得。 //$wpdb->postmeta カスタムフィールドのキーと値が保存されているテーブル global $wpdb; $query = "SELECT meta_id,post_id,meta_key,meta_value FROM $wpdb->postmeta WHERE post_id = $post->ID ORDER BY meta_id ASC"; $cf = $wpdb->get_results($query, ARRAY_A); $pics = array(); $item = array(); $desc = array(); $old = array(); foreach( $cf as $row ){ if( $row['meta_key'] == "画像" ){ array_push( $pics, $row['meta_value'] ); } if( $row['meta_key'] == "商品名" ){ array_push( $item, $row['meta_value'] ); } if( $row['meta_key'] == "商品説明文" ){ array_push( $desc, $row['meta_value'] ); } if( $row['meta_key'] == "対象年齢" ){ array_push( $old, $row['meta_value'] ); $oldary = count($old); } } $length = count( $pics ); //表示 for( $i = 0; $i < $length; $i ++ ){ echo '<div class="food">'; echo '<h3>' . $item[$i] . '</h3>'; echo '<p>' . wp_get_attachment_image( $pics[$i] ) . '<br />'; echo $desc[$i] . '<br />'; if ($n==0) echo '<p>'; else for ($ii=0;$ii<$n;$ii++) echo $oldary[$ii] . '<br />'; echo '<hr />'; echo '</div>'; }
などを試したのですがシンタックスエラーが出るばかりでした。
wordpress3.2.1、Custom Field Template1.9.3を使用しています。
何か解決方法の分かる方、お答えいただければ幸いです。
よろしくお願い致します。
- トピック「【Custom Field Template】multipleを設定したfieldsetにおいてチェックボックを使う」には新たに返信することはできません。