我正在使用 wp_update_post 以编程方式从前端向帖子添加标题和标签。在此过程中,我遇到了与自定义字段有关的令人毛骨悚然的问题:最初创建帖子时创建和填充的两个自定义字段之一的值已删除,而另一个则完全没问题。
这是我首先用来创建帖子的代码的一部分:
// Set the post ID so that we know the post was created successfully
$post_id = wp_insert_post(
array(
'comment_status'=> 'closed',
'ping_status' => 'closed',
'post_author' => $author_id,
'post_name' => $slug,
'post_status' => 'publish',
'post_type' => 'custom'
)
);
// If the post was created properly
if($post_id) {
// Add meta/custom field data to post
add_post_meta($post_id, 'custom_random_id', $randomId);
add_post_meta($post_id, 'viewcount', '1');
然后,这是我用来更新标题和标签的代码:
// Continue if untampered
if($new_hashed_value == $_POST['hash']) {
$updatePost = array();
$updatePost['ID'] = $post_id;
$updatePost['post_title'] = $title;
$updatePost['tags_input'] = $tags;
if(wp_update_post($updatePost)) {
totallyUnrelatedStuff();
}
我从其他帖子中了解到 wp_update_post 可能会删除值-但在这种情况下,自定义字段“ custom_random_id ”始终保持不变,并且“ viewcount ”始终删除其值。
我试过改变它,让它去:
if(wp_update_post($updatePost)) {
update_post_meta($post_id, 'viewcount', '1');
}
甚至:
if(wp_update_post($updatePost)) {
delete_post_meta($post_id, 'viewcount');
add_post_meta($post_id, 'viewcount', '1');
}
但是viewcount字段的值会继续被删除。
此外,只是为了向我扔另一个扳手,
if(wp_update_post($updatePost)) {
delete_post_meta($post_id, 'viewcount');
add_post_meta($post_id, 'new_field', 'new_value');
}
完美运行。
有人会知道发生了什么吗?
谢谢!