修正WordPress后台消息框闪烁移位

WordPress后台顶部的消息框显示,一直有个BUG,比如常规设置页面,当你点击保存更改后,“设置已保存”的消息框会先显示在H1标题的上方,页面加载完又跳到标题下方,因为页面较长,保存设置后,如果不特意迅速滑动到顶部,并不会看到这个闪烁移位BUG。

修正WordPress后台消息框闪烁移位

该问题的根源在于页面结构设计与DOM操作的不合理。消息框在HTML源码中本位于标题上方,开发者试图通过JavaScript将其动态移动至标题下方。由于JS执行存在延迟,在脚本加载完成前页面会呈现原始布局,从而引发视觉闪烁与位置跳动。在Web性能指标中,这种非预期的布局变动被称为CLS布局偏移。

这个视觉BUG,不会影响正常的功能,如果看着不顺眼,可以将代码添加到当前主题函数模板functions.php中:

add_action( 'admin_head', function () {
    $screen = get_current_screen();
    if ( ! $screen || 'customize' === $screen->id ) {
        return;
    }
    ?>
    <style>
        body.wp-admin:has(.wrap h1, .wrap h2) #wpbody-content > .notice:not(.inline):not(.below-h2),
        body.wp-admin:has(.wrap h1, .wrap h2) #wpbody-content > .updated:not(.inline):not(.below-h2),
        body.wp-admin:has(.wrap h1, .wrap h2) #wpbody-content > .error:not(.inline):not(.below-h2) {
            display: none;
        }
    </style>
    <?php
} );

之后,问题解决。

上面的方法,并不是完美的解决办法,只是将消息框在H1上方的状态通过CSS隐藏了,视觉上消除了闪烁移位。

只能期盼开发者在新版本中重写这部分结构,彻底消除这个问题。


早在2018年就有人提出这个BUG,最近也有人提过,但居然过了七年有余也未修复,也是无语了。

开发人员,敷衍回复,一会说7.0中准备修复,一会说7.1,最后又说7.2,无限拖延。

未经允许不得转载:玫瑰屋工作室 » 修正WordPress后台消息框闪烁移位