我有一个自定义字段中的数据在自动保存后消失的问题,但这里的答案对我没有帮助(Custom field being erased after autosave).
我有此自定义字段:
add_action(\'save_post\', \'save_intro\');
function admin_init(){
add_meta_box("customField1", "Intro", "fieldIntro", "post", "normal", "high");
function fieldIntro(){
global $post;
$custom = get_post_custom($post->ID);
$intro = $custom["intro"][0];
wp_editor( $intro, \'intro\', $settings = array(\'textarea_rows\'=>10) );
}
function save_intro(){ //preserve the data in the admin section
global $post;
update_post_meta($post->ID, "intro", $_POST["intro"]);
}
我尝试了以下解决方案(在上述函数之后插入):
add_action(\'save_post\', \'save_my_post\');
function save_my_post($post_id)
{
// Stop WP from clearing custom fields on autosave,
// and also during ajax requests (e.g. quick edit) and bulk edits.
if ((defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE) || (defined(\'DOING_AJAX\') && DOING_AJAX) || isset($_REQUEST[\'bulk_edit\']))
return;
// Clean, validate and save custom fields
}
这个也是:
add_action(\'save_post\', \'save_details\');
function save_details(){
if( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ) return;
global $post;
update_post_meta($post->ID, "intro", $_POST["intro"]);
}
但是,如果我等待自动保存,然后单击自动保存并获得该修订,自定义字段数据将丢失。
也许我没有以恰当的方式复制这个问题?
谢谢
最合适的回答,由SO网友:s_ha_dum 整理而成
您需要检查$_POST
数据在保存前包含自定义字段信息:
if (!empty($_POST["intro"])) {
update_post_meta($post->ID, "intro", $_POST["intro"]);
}
此外,如果您也要求,Wordpress会将post ID和post对象传递到您的回调中。
function save_intro($ID, $post){ //preserve the data in the admin section
// ...
}
add_action(\'save_post\', \'save_intro\',10,2);
你不需要这个
global $post
完全