這是因爲當您更新帖子時,會使用* wp_insert_post *函數,並且存在通常用於保存自定義字段數據的「save_post」(1)動作鉤子。
的標準方法來添加/更新後的元是這樣的:
$post_meta['_mymeta'] = $_POST['_mymeta'];
// Add values of $events_meta as custom fields
foreach ($events_meta as $key => $value) { // Cycle through the $post_meta array!
if($post->post_type == 'revision') return; // Don't store custom data twice
if($value && $value != get_post_meta($post->ID, $key, TRUE)) { // If the custom field already has a value
update_post_meta($post->ID, $key, $value);
} elseif($value && get_post_meta($post_id, $key, TRUE) == "") { // If the custom field doesn't have a value
add_post_meta($post->ID, $key, $value, TRUE);
}
if(!$value) delete_post_meta($post->ID, $key, get_post_meta($post->ID, $key, TRUE)); // Delete if blank
}
...你可以看到它正在檢查* $ _ POST *數據,如果是空的,或者沒有設置用空數據更新您的元值或完全刪除它。
我想你應該使用database update function或其他一些API函數來更新後場......比如這段代碼將更新後的菜單命令:
$wpdb->update($wpdb->posts, array('menu_order' => 5), array('ID' => $post->ID));
(1)運行時後或頁面已創建或更新,可能來自導入,發佈/頁面編輯表單,xmlrpc或通過電子郵件發佈。動作函數參數:帖子ID。
我認爲你的解決方案可能是我需要更新我現有的職位。我所做的是將變量的值反映到自定義字段中。面臨的挑戰是,該值顯示在編輯屏幕中,但在更新帖子之前,不會在前端生效。我有1,800多個帖子,這需要很長時間才能手動更新。您的其中一個解決方案可以幫助我更新現有的帖子嗎?雖然我不想刪除空白字段。感謝您的幫助。 – gdinari 2011-06-22 21:12:54
我希望函數在任何時候創建或導入帖子時運行,等等。請讓我知道你是否有任何想法。謝謝。 – gdinari 2011-06-22 21:21:52