Wordpress get_post_metadata()返回序列化数组

时间:2016-12-19 16:18:53

标签: php arrays wordpress custom-fields

我使用Wordpress和Calderawp表单来构建调查网站,并且我遇到了复选框选择结果的问题。

我使用了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:
...

我还尝试打印$val,结果是另一个Array

此外,我尝试使用多个foreach循环设置新变量,例如:

$my_key = $val['some_key'];

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

...我发现嵌套数组的层和层深。

是否有人遇到此问题并找到了解决方案?

1 个答案:

答案 0 :(得分:0)

看起来以下行使用错误的参数&#39;键&#39;函数所需的参数:

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

应该是

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