私はWordpressとCalderawpフォームを使ってアンケートサイトを構築していますが、チェックボックスの選択結果に問題があります。Wordpress get_post_metadata()はシリアル化された配列を返します
私は、Calderaプロセッサを使用して、調査フォームの各収集フィールドをカスタム投稿タイプのカスタムフィールドにプッシュしました。私の問題は、get_post_metadataが、クラスオブジェクトのように見える大規模で直列化された配列を返すことです。ここで
は、私が参照してるのカスタムフィールドのいずれかの結果のスクリーンショットです:ここでは、
と出力を変更するために私の現在の試みです:
/**
* 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;
}
...ネストされた配列はレイヤーとレイヤーが深くなっていることがわかりました。
誰もがこの問題を経験して解決策を見つけましたか?