• いつもお世話になっております。

    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においてチェックボックを使う」には新たに返信することはできません。