wp_update_post を使用して、タイトルとタグをフロントエンドからプログラムで投稿に追加しています。プロセス中のカスタム フィールドで、頭を悩ませる問題に遭遇しています。投稿が最初に作成されたときに作成され、入力された 2 つのカスタム フィールドのうちの 1 つは値が削除されていますが、もう 1 つは完全に問題ありません。
これは、最初に投稿を作成するために使用するコードの一部です。
// 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フィールドの値は引き続き消去されます。
さらに、私にもう1本レンチを投げつけるだけで、
if(wp_update_post($updatePost)) {
delete_post_meta($post_id, 'viewcount');
add_post_meta($post_id, 'new_field', 'new_value');
}
完璧に動作します。
誰が何が起こっているのか知っていますか?
ありがとう!