Custom fields and auto save

时间:2015-05-22 作者:Claudiu Creanga

我有一个自定义字段中的数据在自动保存后消失的问题,但这里的答案对我没有帮助(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"]);

}
但是,如果我等待自动保存,然后单击自动保存并获得该修订,自定义字段数据将丢失。

也许我没有以恰当的方式复制这个问题?

谢谢

1 个回复
最合适的回答,由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 完全

结束

相关推荐