【问题标题】:Wordpress get_post_metadata() returns serialized arrayWordpress get_post_metadata() 返回序列化数组
【发布时间】:2016-12-19 16:18:52
【问题描述】:

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

我使用 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/>';
    }

}

这段代码的结果是这样的:
键:some_key|验证:
键:另一个键|验证:
键:yet_another_key|验证:
...

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

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

$my_key = $val['some_key'];

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

...而且我发现嵌套数组层层递进。

有没有人遇到过这个问题并找到了解决方案?

【问题讨论】:

    标签: php arrays wordpress custom-fields


    【解决方案1】:

    以下行似乎为函数所需的“key”参数使用了错误的参数:

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

    应该是

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 2011-10-04
      • 2021-10-13
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      相关资源
      最近更新 更多