Verschobenen „Aktualisieren“-Button im Classic Editor reparieren

Der Fehler mit dem verschobenen „Aktualisieren“-Button im Classic Editor tritt seit einem aktuellen WordPress-Update auf mehreren Installationen auf. Betroffen waren sowohl Seiten mit WP Rocket als auch Installationen mit LiteSpeed Cache.

Die Ursache scheint eine Kombination aus modernen Tailwind-/Flexbox-Styles im Adminbereich und dem alten Float-Layout des Classic Editors zu sein. Besonders betroffen ist der Bereich #major-publishing-actions.

Interessant: Der reine CSS-Fix hat auf einigen Installationen nicht gereicht. Erst eine zusätzliche Side-Metabox hat das Layout wieder stabilisiert. Offenbar beeinflussen DOM-Struktur, Sidebar-Höhe oder Rendering-Reihenfolge das Verhalten zusätzlich.

Folgendes Snippet behebt das Problem aktuell zuverlässig:


/**
 * Zusätzliche Metabox + CSS-Workaround
 * für kaputtes Publish-/Aktualisieren-Layout
 * im WordPress Classic Editor
 */

/* ------------------------------
 * CSS-Fix für Publish-Bereich
 * ------------------------------ */
add_action('admin_head', function () {
    ?>
    <style>

        #major-publishing-actions {
            display: block !important;
        }

        #delete-action {
            float: left !important;
        }

        #publishing-action {
            float: right !important;
        }

        #major-publishing-actions::after {
            content: "";
            display: block;
            clear: both;
        }

    </style>
    <?php
}, 999);


/* ------------------------------
 * Zusätzliche Side-Metabox
 * ------------------------------ */
add_action( 'add_meta_boxes', 'im2_publish_fix_meta_box' );

function im2_publish_fix_meta_box() {

    $types = get_post_types(
        [ 'public' => true ],
        'names'
    );

    foreach ( $types as $type ) {

        add_meta_box(
            'im2-publish-fix-box',
            'Änderungen',
            'im2_publish_fix_box_render',
            $type,
            'side',
            'high'
        );

    }
}


/* ------------------------------
 * Inhalt der Metabox
 * ------------------------------ */
function im2_publish_fix_box_render() {

    echo '<p style="margin:0;">Classic-Editor-Layoutfix aktiv.</p>';

}