Диалоговое окно «Несавретки изменений» для индивидуальных изменений после мета
-
16-10-2019 - |
Вопрос
Я использую пользовательский тип поста с пользовательскими мета -полями, но Autosave и диалог «Unsaved Change», похоже, не запускаются для этих пользовательских металлов. Autosave не так важна для меня, как диалог неспасенных изменений - есть ли способ запустить его?
function add_meta_boxes() {
add_meta_box('places_location', __('Location'), array(&$this, 'location_box'), 'place', 'normal', 'high');
}
function location_box($post) {
wp_nonce_field(plugin_basename(__FILE__), 'places_location_nonce');
$lat = get_post_meta($post->ID, 'places_lat', true);
$lng = get_post_meta($post->ID, 'places_lng', true);
?>
<p>
<label>
Latitude:
<input name="places_lat" value="<?php echo esc_attr($lat); ?>" />
</label>
<label>
Longitude:
<input name="places_lng" value="<?php echo esc_attr($lng); ?>" />
</label>
</p>
<?php
}
function save_place($id) {
// skip unverified location nonces
if(!wp_verify_nonce($_POST['places_location_nonce'], plugin_basename(__FILE__))) return;
// skip autosave calls
// commenting this out still doesn't trigger saving these fields on autosave
//if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
// update our custom post meta
update_post_meta($id, 'places_lat', (float)$_POST['places_lat']);
update_post_meta($id, 'places_lng', (float)$_POST['places_lng']);
}
Решение
Код действительно смотрит только на редактор tinymce или поле заголовка и контента, если редактор скрыт:
window.onbeforeunload = function(){
var mce = typeof(tinyMCE) != 'undefined' ? tinyMCE.activeEditor : false, title, content;
if ( mce && !mce.isHidden() ) {
if ( mce.isDirty() )
return autosaveL10n.saveAlert;
} else {
title = $('#post #title').val(), content = $('#post #content').val();
if ( ( title || content ) && title + content != autosaveLast )
return autosaveL10n.saveAlert;
}
};
Вы можете заменить это onbeforeunload
Обработчик с вашим собственным (обязательно включите существующую функциональность, конечно). Или играть с isDirty()
Состояние редактора tinymce и это autosaveLast
ценность?
Другие советы
Я решил эту проблему, используя этот отличный плагин jQuery Это проверяет грязное состояние формы. Он содержит методы для проверки добавленных/удаленных/модифицированных полей через JavaScript. Это полностью пинает задницу!
Я не занимался «Автосовой» (пока). Я надеюсь, что кто -то найдет это полезным.