2016-12-19 4 views
1

私はWordpressとCalderawpフォームを使ってアンケートサイトを構築していますが、チェックボックスの選択結果に問題があります。Wordpress get_post_metadata()はシリアル化された配列を返します

私は、Calderaプロセッサを使用して、調査フォームの各収集フィールドをカスタム投稿タイプのカスタムフィールドにプッシュしました。私の問題は、get_post_metadataが、クラスオブジェクトのように見える大規模で直列化された配列を返すことです。ここで

は、私が参照してるのカスタムフィールドのいずれかの結果のスクリーンショットです:ここでは、 enter image description here

と出力を変更するために私の現在の試みです:

/** 
* Alter output of custom fields 
*/ 
add_filter('get_post_metadata', 'custom_get_post_metadata_filter', 10, 4); 
function custom_get_post_metadata_filter($value, $post_id, $meta_key, $single){ 

    //This prevents infinite loop 
    remove_filter('get_post_metadata', 'custom_get_post_metadata_filter', 10 ); 

    $value = get_post_meta($post_id, $value, true); 
    add_filter('get_post_metadata', 'custom_get_post_metadata_filter', 10, 4); 

    foreach ($value as $key => $val) { 
     $unserialized = unserialize($val); 
     echo 'key: ' . $key . '| val: ' . $unserialized . '<br/>'; 
    } 

} 

結果このコードは次のようなものです:
key:some_key | val:
key:another_key | val:
key:yet_another_key |ヴァル:
...

私もちょうど$valを印刷しようとしましたが、結果は別のArray

でまた、私のような、新しい変数を設定することで、複数のforeach文を使用しようとしました:

$my_key = $val['some_key']; 

foreach($my_key as $k => $v) { 
    echo $v; 
} 

...ネストされた配列はレイヤーとレイヤーが深くなっていることがわかりました。

誰もがこの問題を経験して解決策を見つけましたか?

答えて

0

次の行が関数で必要とされる「キー」引数に間違ったパラメータを使用しているように見えます:

$value = get_post_meta($post_id, $value, true); 

$value = get_post_meta($post_id, **$meta_key**, true); 
する必要があります
関連する問題