web-dev-qa-db-fra.com

Barres d'administration de différentes couleurs pour le développement, la mise en scène et la production

J'aimerais l'obtenir afin que tous mes sites aient une barre d'administration de couleur différente. Dev Staging et Production. J'utilise Git pour pousser mon code.

Toute aide serait appréciée.

1
sethg

Vous pouvez utiliser un filtre pour définir le jeu de couleurs de l'administrateur, qui inclut les couleurs de la barre d'administration:

<?php // add a filter
add_filter('get_user_option_admin_color', 'wpse_313419_conditional_admin_color');
// 
function wpse_313419_conditional_admin_color($result) {
    // Dev: use 'light' color scheme
    if(get_site_url() == 'http://dev.example.com') {
        return 'light';
    // Staging: use 'blue' color scheme
    } elseif(get_site_url() == 'http://staging.example.com') {
        return 'blue';
    // Production (all other cases): use 'sunrise' color scheme
    } else {
        return 'sunrise';
    }
} ?>

Vous pouvez voir les 8 palettes de couleurs intégrées en modifiant le profil d'un utilisateur et en affichant les options "Palette de couleurs administrateur" en haut. Vous les utilisez simplement en minuscules. Le filtre remplace les préférences de chaque utilisateur et applique le jeu de couleurs de votre choix. Si vous le souhaitez, vous pouvez également créer vos propres jeux de couleurs personnalisés.

Si les URL de votre site changent souvent, vous pouvez effectuer une étape supplémentaire: lorsque le thème est activé, enregistrez l'environnement en tant qu'option, puis extrayez-le à l'aide de get_option au lieu de get_site_url.

Enfin, si vous souhaitez simplement utiliser un plugin pour gérer tout cela à votre place, il existe au moins une solution prête à l'emploi dans le référentiel de plug-ins WP.

3
WebElaine

Heureusement, la solution que vous souhaitez est en réalité assez simple. Utilisez simplement le hook d’action 'wp_before_admin_bar_render' et le CSS de sortie pour modifier les coloret backgroundde l’élément HTML avec le idde wpadminbarname__.

Vous trouverez ci-dessous un extrait du code que vous pouvez enregistrer dans un fichier de votre thème et sur require() à partir du fichier functions.php de votre thème, ajouter un en-tête de plug-in et l'utiliser comme plug-in, l'ajouter à un plugin existant et le require()-le ou simplement copier dans /mu-plugins et WordPress chargez-le automatiquement.

Assurez-vous cependant de modifier la fonction _get_color_pair() pour renvoyer une paire de couleurs différente en fonction de l'hôte effectuant le chargement:

<?php

class WPSE_313419 {
    static function on_load() {
        add_action(
            'wp_before_admin_bar_render',
            [ __CLASS__, '_wp_before_admin_bar_render_99' ],
            99
        );
    }

    static function _wp_before_admin_bar_render_99() {
        $color_pair = self::_get_color_pair();
        $html = <<<HTML
<style type="text/css">
    #wpadminbar{color:{$color_pair->color};background:{$color_pair->background};}
</style>
HTML;
        echo $html;
    }

    /**
     * Modify this function to return the colors you want
     * based on the value of get_site_url() or based on
     * a constant defined in each Host's /wp-config.php.
     *
     * @return object
     */
    private static function _get_color_pair() {
        return (object)array(
            'color' => 'white',
            'background' => 'red',
        );
    }
}
WPSE_313419::on_load();

Des questions? Il suffit de demander.

J'espère que cela t'aides.

-Mike

1
MikeSchinkel