Wordpress' add_post_meta' - 数据不会显示在页面上,直到手动打开帖子并更新'

时间:2015-12-01 10:52:33

标签: php wordpress

我使用PHP自动化创建新的Wordpress帖子(使用 wp_insert_post )。我也在使用' Simple Fields'添加额外的元字段以便在前端显示。

我的代码创建Wordpress帖子,将帖子ID保存在变量中,然后立即继续添加所需的元数据。

修剪所有其他杂乱,这是我的过程:

// Insert the post into the database and return the post ID
$post_id = wp_insert_post( $my_post );

// Add '$price' to relevant meta field
update_post_meta($post_id, '_simple_fields_fieldGroupID_1_fieldID_4_numInSet_0', $price);

这项工作正常,当我检查数据库时,价格是'元字段已插入正确的信息。

当我尝试使用以下方法提取问题时,问题就出现了:

echo simple_fields_value("price", $post->ID);

代码有效 - 但是我能够获取数据的唯一方法是登录Wordpress管理员,打开帖子进行编辑,然后点击“更新”。

如果我打开每个帖子并点击“更新”,那么我的代码就不会出现问题......它会按预期执行所有操作。

我的问题是,'更新'按钮这样做我不是吗?我尝试过使用' wp_update_post'重新打开帖子并在添加元数据后保存以查看是否有帮助,但它没有。

// Open and update post to ensure meta data saves correctly
$update_post = array(
  'ID'           => $post_id,
  'post_title'   => $title
);

// Update the post into the database
wp_update_post($update_post);

非常感谢您对此的帮助,

1 个答案:

答案 0 :(得分:2)

看起来您正在使用Simple Fields Plugin。我从来没有亲自使用过这个插件,但我快速浏览了一下,看起来这个插件在帖子的保存上运行了一些额外的东西。以下是用于某种缓存的查询之一:

// Save info about the fact that this post have been saved. This info is used to determine if a post should get default values or not.
        update_post_meta($post_id, "_simple_fields_been_saved", "1");

由于您手动插入此元值,我建议您使用原生wordpress get_post_meta函数调用该值,您的查询应如下所示:

get_post_meta($post->ID, "_simple_fields_fieldGroupID_1_fieldID_4_numInSet_0");