2

カスタム投稿タイプにいくつかのカスタム フィールドを入力するための Gravity Forms を含むリスト フィールドがあります。このサイトはレシピ投稿サイトで、SEO を強化するために材料を個別に追加できるユーザーを探しています。私の問題は、フォームを送信すると、食材の下の最後の入力フィールドのみがレシピに渡されることです。

このカスタム フィールドは配列を取得するため、シリアル化されたリストが必要であることはわかっていますが、それを行う方法がまったくわかりません。配列は次のように読み取る必要があります

 a:8:{i:0;s:26:"4oz piece of salmon/person";i:1;s:12:"1 egg/person";i:2;s:37:"1-2 multi-colored bell peppers/person";i:3;s:12:"Greek olives";i:4;s:9:"Olive oil";i:5;s:13:"Salt & Pepper";i:6;s:22:"Basil (fresh or dried)";i:7;s:0:"";}

1 つのフォーム フィールドに対してシリアル化された配列をまとめることをどこから始めればよいかさえわからないので、正しい方向への微調整は大歓迎です。

4

4 に答える 4

0

残念ながら、Gravity Forms はこれらを個別のメタ レコードとして保存するように構成されています。1 つのオプションは、Gravity Formsforms_model.phpファイルのcreate_post関数をカスタマイズすることです。これは、フィールドの内容をシリアル化解除し、各項目をループして新しいpost_metaレコードを作成します。

次のコードは、フィールド type の大文字と小文字を置き換える必要がlistあり、Gravity Form フィールドの定義済み配列に個々のメタ レコードが作成されないようにします。

case "list" :
    $skipped_list_fields = array('<meta name for field to skip unserializing>',
        '<meta name for another field to skip unserializing>');
    $value = maybe_unserialize($value);
    if (in_array($meta_name, $skipped_list_fields)) {
        if(!rgblank($value))
            add_post_meta($post_id, $meta_name, $value);
    } else {
        if(is_array($value)){
            foreach($value as $item){
                if(is_array($item))
                    $item = implode("|", $item);

                if(!rgblank($item))
                    add_post_meta($post_id, $meta_name, $item);
            }
        }
    }
    break;
于 2014-01-17T14:59:48.823 に答える
0

ジェイソン、誰かが同様の状況を経験しました-あなたのテーマのfunctions.phpでの同様の編集が方向だと思います...

于 2013-12-18T00:55:09.877 に答える
0

リストタイプとして構成されたカスタムフィールドフォームフィールドを使用して、このようにフォームに入力すると、すべての成分がこのように個別の投稿メタアイテムとして表示されます (ただし、すべて同じキーに添付されます)

これはあなたが見ているものとは異なりますか、それとも何か違うことを達成しようとしていますか?

于 2013-12-18T02:25:09.280 に答える