为什么我离开页面时会丢失meta box的内容?

时间:2012-04-28 作者:Nikolay Dyankov

因此,我一直在编写一个主题,并正在编写一个自定义的帖子类型。当我编辑自定义帖子并保存更改(单击更新)时,一切都正常。

但是-我注意到,当我打开编辑页面一段时间,几分钟后再返回并尝试刷新时,会弹出“保持页面/离开页面”对话框,如果我选择“离开页面”,自定义元框中的所有内容都会丢失。只保留标题。

我猜这与我从自定义元框中保存数据的方式有关,因此:

add_action(\'admin_init\', \'init_portfolio_meta_boxes\');

function init_portfolio_meta_boxes() {
    add_meta_box(\'short_description\', \'Short Description\', \'short_description_meta\', \'portfolio\', \'normal\');
}

function short_description_meta() {
    global $post;
    $custom = get_post_custom($post->ID);
    $short_description = $custom[\'short_description\'][0];
    ?>
        <textarea name="short_description" style="width: 200px; height: 100px;"><?php echo $short_description; ?></textarea>
    <?php
}

add_action(\'save_post\', \'save_details\');
function save_details() {
    global $post;
    update_post_meta($post->ID, \'short_description\', $_POST[\'short_description\']);
}
这是其中一个元框的全部代码,我按照教程进行了学习。

1 个回复
SO网友:Stephen Harris

这是因为save_details 未检查其是否为自动保存例程:

add_action(\'save_post\', \'save_details\');
function save_details() {
    global $post;
    // verify this is not an auto save routine. 
    if ( defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE ) return;
    update_post_meta($post->ID, \'short_description\', $_POST[\'short_description\']);
}

结束