使用GET_POST_META获取正确的元值

时间:2016-02-26 作者:mesqueeb

我尝试使用函数get\\u post\\u meta()来获取帖子的元值。然而,令我惊讶的是,它返回了一个再次包含数组的数组!因此,我查看了第二级数组,并通过以下代码获得了一个元值列表:

$postmeta = get_post_meta($resultid, \'\', true);

foreach ($postmeta as $meta_key => $v) {
    foreach ($v as $kk => $meta_value) {
        echo "$meta_key => $meta_value.\\n";
    }
}
然而,即使我$single = true 阅读此处的文档:https://developer.wordpress.org/reference/functions/get_post_meta/
对于同一个元键,它仍然为我提供了2个值。

E、 g.我打印了这份清单:

select_inco => fob.
select_inco => fob.
price_input_currency => usd.
price_input_currency => usd.
price_input => 58.
price_input_to => .
price_per => .
price_comments => 

My Question:

我怎么知道这两个值之间的区别是什么select_incoprice_input_currency 哪一个是正确的?

这就是我如何从表单中添加和编辑meta\\u值的方法:

update_post_meta($post_id, \'select_inco\', $_POST[\'select_inco\']);

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

get_post_meta() 只是一个包装get_metadata(). 如果我们查看来源或get_metadata(), 我们会发现,如果$key 为空,$single 由于前面的以下代码行而被忽略$single 已应用

if ( ! $meta_key ) {
    return $meta_cache;
}
因此,在您的用例中,$single 永远也做不到这件事。

double key=>value pairs仅仅意味着您有一个特定键的值数组,数组中的两个值是相同的值。这是由负责将数据保存到自定义字段的代码中的某个缺陷引起的。您应该去搜索特定的代码片段,并对特定的问题进行排序。

我不能告诉你哪个是正确的值,哪个不是,这是你也无法回答的。正如我所说,您需要对负责保存自定义字段数据的代码进行排序。

同时,您可以打破foreach循环,只从自定义字段中获取第一个值,但我不建议将此作为解决方案,该解决方案将涉及对保存自定义字段数据的方式进行排序

$postmeta = get_post_meta($resultid, \'\', true);

foreach ($postmeta as $meta_key => $v) {
    foreach ($v as $kk => $meta_value) {
        echo "$meta_key => $meta_value.\\n";
        break;
    }
}

相关推荐

WooCommerce:Pre_Get_Posts中的复杂查询

我想在获取产品时添加一个复杂的过滤。我有一些产品,其中一些链接到自定义帖子类型</此自定义帖子类型有一个转发器字段根据cookie的不同,我应该只获取在此转发器字段中具有该值的产品,我知道我可以使用:add_filter( \'pre_get_posts\', \'fwp_archive_per_page\' ); 我知道我可以像这样设置额外的元查询:$query->set( \'meta_query\', array( \'relation\' => \'