サポート » プラグイン » Custom Field TemplateでMultipleなfieldset

  • 解決済 tonoro

    (@tonoro)


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

    Custom Field Templateでfieldsetを複製したときの値の取得方法で困ってお
    ります。

    ■Custom Field Templateの管理画面にて

    [field0]
    type = fieldset_open
    legend = 見出し
    multiple = true
    multipleButton = true
    
    [value1]
    type = text
    label = 項目1
    
    [value2]
    type = text
    label = 項目2
    
    [field0]
    type = fieldset_close

    のように設定しています。
    投稿画面にて適宜値を入力しています。

    ■該当テンプレートにて

    $cf = get_post_custom( $post->ID );
    $value1 = $cf['value1'];
    $value2 = $cf['value2'];
    $field0 = $cf['field0'];
    $length = field0[0];
    
    for( $i = 0; $i < $length; $i++ ){
    	echo '<dl>';
    	echo '<dt>' . $value1[$i] . '</dt>';
    	echo '<dd>' . $value2[$i] . '</dd>';
    	echo '</dl>';
    }

    とした時、fieldsetを後から増やした場合に、$value1と$value2の並びがバラ
    バラになってしまいます。

    Custom Field Templateの設定になりか間違いがあるのでしょうか?
    もしくは値の取得方法が間違っているのでしょうか?

    お分かりになる方、ご教授願います。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック投稿者 tonoro

    (@tonoro)

    本家サイトに「グループ内でのフィールドごとの’multiple = true’と
    ‘multipleButton = true’はうまく機能しない。」という記述がありましたの
    で、「multiple = true」を外したところ、目的の通りに値が取得できました。
    追加削除を繰り返すと順序がバラバラになりますが、何かソートのキーになる
    もの(IDや日時等)の項目を作成し、レコードとして連結した後にソートすれば
    表示順序も調整できました。

    以下汚いですが、コードです。
    ■Custom Field Templateの管理画面にて

    [field0]
    type = fieldset_open
    legend = 見出し
    multipleButton = true
    
    [value1]
    type = text
    label = 項目1
    
    [value2]
    type = text
    label = 項目2
    
    [field0]
    type = fieldset_clos

    ■テンプレートにて

    $cf  = get_post_custom( $post->ID );
    $value1	= $cf['value1'];
    $value2	= $cf['value2'];
    $field0 = $cf['field0'];
    $lengh = $field0[0] );
    
    //ソートのための配列生成
    $values = array();
    for( $j = 0; $j < $length; $j ++ ){
    	$v = $value1[$j] . "|" . $value2[$j] ;
    	array_push( $values, $v );
    }
    //$value1でソート
    sort( $values );
    
    //表示
    for( $i = 0; $i < $length; $i ++ ){
    	$value = $values[$i];
    	$v = explode( "|",  $value );
    		echo '<dl>';
    		echo '<dt>' . $v[0] . '</dt>';
    		echo '<dd>' . $v[1] . '</dd>';
    		echo '</dl>';
    }

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「Custom Field TemplateでMultipleなfieldset」には新たに返信することはできません。