我使用高级自定义字段(ACF)在自定义字段中存储数据。我单独存储了纬度和经度信息,但它们需要位于一个自定义字段中,因此我创建了下面的函数。$query
只需查询所有相关帖子。
<?php
$query = query_custom_posts(); if($query->have_posts()):
while ($query->have_posts()): $query->the_post();
if(get_field(\'map_lat\') && get_field(\'map_lng\')):
$lat = get_field(\'map_lat\');
$long = get_field(\'map_lng\');
$coord = $lat.\',\'.$long;
$post_id = get_the_ID();
update_post_meta($post_id, \'map_coor\', $coord);
endif; endwhile; wp_reset_query(); endif;
?>
现在,上述功能正常工作。field map\\u coor用lat填充,并用逗号长分隔(我可以在字段中看到信息)。
奇怪的是如果我用get_field(\'map_coor\')
前端没有显示任何内容。如果我保存了相应的帖子,那么信息就会显示出来。
在上面的函数中,我也尝试使用该函数update_field
(来自ACF)如下:update_field($post_id, \'map_coor\', $coord)
但问题仍然存在。
所以我的问题是;我需要更改上面的函数吗,还是只运行一个保存所有帖子的函数?如果是后者;我该怎么做?我找到钩子了save_posts
但我不知道如何让它贯穿所有的帖子。
最合适的回答,由SO网友:realloc 整理而成
问题是函数update_field from ACF 工作原理与update_post_meta. 你能看到吗?
update_post_meta( $post_id, $meta_key, $meta_value, $prev_value );
update_field( $field_key, $value, $post_id );
如果您使用
update_post_meta 我认为你应该使用
get_post_meta 获取元数据。如果您使用
update_field 您应该使用
the_field 或
get_field 因为ACF以稍微不同的方式存储键/值对。