Entfernen Sie Farbschemaoptionen von der Profilseite des Benutzers in WordPress 6.0

Lesezeit: 3 Minuten

Ich habe diesen Code immer in einem unverzichtbaren Plugin verwendet, um den gesamten Abschnitt mit den Farbschemata zu entfernen:

remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );

Leider funktioniert dies mit WordPress 6.0 nicht mehr. Ich habe die Kerne gefunden add_action( 'admin_color_... War kürzlich verzogen aus default-filters.php Datei an die admin-filters.php Datei, aber ich bin mir nicht sicher, warum und Wie Ich müsste das obige Snippet aktualisieren, damit es wieder funktioniert.

Für ein remove_action() Um wirksam zu sein, muss der Aufruf aufgerufen werden, nachdem die Aktion, die Sie entfernen möchten, hinzugefügt wurde und bevor die Aktion ausgeführt wird.

WordPress fügt das hinzu admin_color_scheme_picker Aktion in admin-filters.php und führt dann die Aktion im aus user-edit.php Admin-Seitenvorlage.

Um das zu entfernen admin_color_scheme_picker Aktion unmittelbar bevor sie auf der Benutzerprofilseite aufgerufen wird, können Sie die Aktion ausführen remove_action() Rufen Sie mit dem an admin_head-profile.php Haken:

add_action( 'admin_head-profile.php', 'wpse_72463738_remove_admin_color_scheme_picker' );

/**
 * Remove the color picker from the user profile admin page.
 */
wpse_72463738_remove_admin_color_scheme_picker() {
    remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
}

Notiere dass der admin_head-{$hook_suffix} Hook wird im Kopfbereich für eine bestimmte Admin-Seite ausgelöst. Im obigen Beispiel ersetzen $hook_suffix mit profile.php im Hook-Namen bewirkt, dass es auf der Benutzeradministratorprofilseite ausgeführt wird.

  • Vielen Dank, das hilft sehr. Es ist also so, wie ich es im Kommentar zu @josh-bonnick gesagt habe: Wahrscheinlich wird es zu früh ausgelöst (vor dem add_action), aber ich weiß nicht, was/wann/wo ich es einhängen soll … Es fällt mir also immer noch schwer herauszufinden, warum der kürzliche Umzug nach admin-filters.php stellt die add_action nach Mein remove_action. Wo sehe ich das im Code des Kerns?

    – jovilog

    3. Juni 2022 um 14:06 Uhr


  • Eine schnelle Suche im WordPress-Quellcode zeigt, dass die default-filters.php Datei wird geladen Zeile 134 in der Datei wp-settings.phpunbedingt zu verwendende Plugins werden in derselben Datei geladen Zeile 351. Ohne weiter zu graben, kann ich das nur vermuten admin-filters.php wird später geladen als Ihr unbedingt zu verwendendes Plugin. Wenn Sie versuchen, die Ladereihenfolge herauszufinden, ist es am besten, in die Tiefe zu gehen und einen Blick auf den WordPress-Quellcode zu werfen.

    – Barry Ceelen

    4. Juni 2022 um 0:59

  • Ich habe oben den Haken für hinzugefügt user-edit.php: add_action( 'admin_head-user-edit.php', 'wpse_72463738_remove_admin_color_scheme_picker' );

    – Wittich

    14. Okt. 2022 um 14:04

Sie können den anderen Teil der if-Anweisung in verwenden user-edit.php um die Möglichkeit zum Ändern des Farbschemas zu entfernen.

Aus user-edit.php

<?php if ( count( $_wp_admin_css_colors ) > 1 && has_action('admin_color_scheme_picker' ) ) : ?>

Obwohl dies keine direkte Lösung für die Verwendung der Aktionsentfernungsfunktion ist, können Sie die festlegen $_wp_admin_css_colors global zu einem leeren Array…

add_action( 'admin_init', function () {
    global $_wp_admin_css_colors;
    $_wp_admin_css_colors = [];
} );

  • Ja, das stimmt, aber ich würde gerne verstehen, warum remove_action reicht nicht mehr. Im Allgemeinen scheint dies der empfohlene Weg zu sein. Wahrscheinlich wird es zu früh ausgelöst (vor dem add_action), aber ich weiß nicht, was/wann/wo ich es einhängen soll.

    – jovilog

    2. Juni 2022 um 13:46 Uhr


  • @jovilog Ich habe versucht, es einzubinden admin_init Und init mit einer Vielzahl von Prioritätswerten, aber es war einfach nicht vorhanden – sehr seltsam.

    – Josh Bonnick

    2. Juni 2022 um 20:15 Uhr

  • Habe das auch alles versucht. Ich bin einfach nicht sehr geschickt darin, solche Dinge im Code aufzuspüren.

    – jovilog

    2. Juni 2022 um 20:48

Zusätzlich zur Antwort von Barry Ceelen, falls Sie entfernen möchten admin_color_scheme_picker Für die Bildschirme „profile.php“ und „user-edit.php“ können Sie Folgendes tun:

add_filter('admin_head',function($class){

        $screen = get_current_screen();
        
        if( in_array($screen->id,array(
        
            'profile',
            'user-edit',
        
        ))){

            // remove color picker
            
            remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker');
        }
});

1451000cookie-checkEntfernen Sie Farbschemaoptionen von der Profilseite des Benutzers in WordPress 6.0

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy