我使用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);
非常感谢您对此的帮助,
答案 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");