保存帖子时,UPDATE_POST_META和UPDATE_FIELD不工作

时间:2013-11-01 作者:eskimo

我使用高级自定义字段(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 但我不知道如何让它贯穿所有的帖子。

1 个回复
最合适的回答,由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_fieldget_field 因为ACF以稍微不同的方式存储键/值对。

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在

保存帖子时,UPDATE_POST_META和UPDATE_FIELD不工作 - 小码农CODE - 行之有效找到问题解决它

保存帖子时,UPDATE_POST_META和UPDATE_FIELD不工作

时间:2013-11-01 作者:eskimo

我使用高级自定义字段(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 但我不知道如何让它贯穿所有的帖子。

1 个回复
最合适的回答,由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_fieldget_field 因为ACF以稍微不同的方式存储键/值对。

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在