在未进行任何更改的情况下,WordPress 已开始警告我“离开网站?您所做的更改可能无法保存”

问题描述 投票:0回答:3

在我的团队开发的 WordPress 主题中,我们最近遇到了一个问题,无论怎样,当尝试退出帖子/页面/自定义帖子类型时,WordPress 都会抛出警告:“离开站点?更改你所做的可能无法保存。”即使您单击更新然后立即尝试退出页面,它也会抛出该警告。

留下网站图片

我不知道是什么原因造成的。这种行为是在我几天前推出重大更新时开始的。我尝试完全删除该更新,通过 git 恢复所有更改,并且该行为仍然存在。我什至切换到几个月没有工作的主题分支,并且这种行为仍然存在。

我尝试过 Chrome、Firefox、Edge,但该行为仍然存在。我已经让同事在他们的计算机上尝试过,并且该行为仍然存在。

这让我发疯!有没有人有任何建议,甚至从哪里开始寻找?这只是最近的 WordPress 问题,与我们的主题无关吗?

wordpress
3个回答
2
投票

此问题是由 WordPress 5.6.1 版本中引入的 bug 引起的。

作为解决方法,您可以暂时将 WordPress 从 5.6.1 降级到 5.6。一种方法是使用 WP Downgrade 插件。

或者,您可以忽略该问题几天/几周,直到他们修复它。


2
投票

将其添加到functions.php对我有用:

// 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
}

归功于Konrad Chmielewski

有关此问题的更多信息此处


0
投票

该问题在 6.6.1 中仍然存在

© www.soinside.com 2019 - 2024. All rights reserved.