Hello,
Just a heads up everyone, this bug was introduced since the last WordPress 5.6.1 update, when using Classic Editor, for all Post Types which don’t have Title + Editor + Excerpt fields supports. Basically all post types at the exception of “WP Post” and “Woocommerce Product”.
Here is the related WordPress trac ticket: https://core.trac.www.ads-software.com/ticket/52440
For anyone wondering, here is a fix you can add in your theme’s functions.php
file, while waiting for the official patch:
/*
* WordPress 5.6.1: Window Unload Error Final Fix
*/
add_action('admin_print_footer_scripts', 'wp_561_window_unload_error_final_fix');
function wp_561_window_unload_error_final_fix(){
?>
<script>
jQuery(document).ready(function($){
// Check screen
if(typeof window.wp.autosave === 'undefined')
return;
// Data Hack
var initialCompareData = {
post_title: $( '#title' ).val() || '',
content: $( '#content' ).val() || '',
excerpt: $( '#excerpt' ).val() || ''
};
var initialCompareString = window.wp.autosave.getCompareString(initialCompareData);
// Fixed postChanged()
window.wp.autosave.server.postChanged = function(){
var changed = false;
// If there are TinyMCE instances, loop through them.
if ( window.tinymce ) {
window.tinymce.each( [ 'content', 'excerpt' ], function( field ) {
var editor = window.tinymce.get( field );
if ( ( editor && editor.isDirty() ) || ( $( '#' + field ).val() || '' ) !== initialCompareData[ field ] ) {
changed = true;
return false;
}
} );
if ( ( $( '#title' ).val() || '' ) !== initialCompareData.post_title ) {
changed = true;
}
return changed;
}
return window.wp.autosave.getCompareString() !== initialCompareString;
}
});
</script>
<?php
}
Hope it helps!
Regards.