Créer une feuille de styles CSS pour le back office de WordPress

Mis à jour le :

Vous souhaitez personnaliser l’apparence du back office de WordPress ?

Ce tutoriel vous montrera comment créer une feuille de styles CSS qui s’appliquera directement dans votre panneau d’administration pour un CMS 100% sur-mesure.

Étape n°1 – Ajout d’une fonction PHP

À l’aide de votre client FTP favori, ouvrez le fichier functions.php de votre thème enfant, pour que votre code survive aux mises à jour du thème, puis insérez la fonction suivante :

/**
 * Load the admin.css stylesheet of the child theme in the WordPress admin.
 */
function wpc_admin_css() {
	$path = get_stylesheet_directory() . '/css/admin.css';

	if ( ! file_exists( $path ) ) {
		return;
	}

	wp_enqueue_style(
		'wpc-admin',
		get_stylesheet_directory_uri() . '/css/admin.css',
		array(),
		(string) filemtime( $path )
	);
}
add_action( 'admin_enqueue_scripts', 'wpc_admin_css' );

Le crochet admin_enqueue_scripts ne se déclenche que dans l’administration. La fonction wp_enqueue_style() y charge le fichier admin.css du dossier css de votre thème enfant, dont get_stylesheet_directory_uri() donne l’adresse. Le numéro de version, tiré de la date de modification du fichier, oblige le navigateur à recharger la feuille après chaque changement. Il vous faut donc créer ce fichier à l’aide de votre éditeur de texte favori – Notepad++, Visual Studio Code, etc.

Vous préférez une petite extension, comme un plugin de fonctions globales (mu-plugin) ? Placez alors admin.css à côté de son fichier PHP, puis remplacez get_stylesheet_directory() . '/css/admin.css' par plugin_dir_path( __FILE__ ) . 'admin.css' et get_stylesheet_directory_uri() . '/css/admin.css' par plugins_url( 'admin.css', __FILE__ ).

Étape n°2 – Création d’une feuille de styles CSS

Placez donc ce fichier dans un dossier /css du répertoire de votre thème enfant – bien que vous puissiez également le placer à la racine du thème en modifiant le chemin aux deux endroits où il figure dans le code.

Pour composer votre feuille, il nous faut identifier les règles à insérer pour qu’elles surpassent les styles par défaut.

Le plus commode consiste à utiliser les outils de développement de votre navigateur, généralement accessibles via la touche F12 : ils permettent d’inspecter chaque élément du back office pour voir les sélecteurs CSS et les règles qui s’y appliquent, et de tester vos modifications en direct avant de les reporter dans votre fichier.

Vous pouvez par exemple modifier la couleur des liens qui donne tout de suite une nouvelle donne visuelle au back office.

Cet exemple colore en violet les liens de la zone principale des écrans d’administration, sans toucher au menu latéral :

/* Change the link color in the admin screens */
#wpbody-content a {
	color: #8224e3;
}

N’oubliez pas de sauvegarder votre fichier CSS pour appliquer les changements.

Si vous voulez seulement changer les couleurs du menu latéral et de la barre d’administration, le réglage Jeu de couleurs de l’administration de Comptes > Profil propose déjà plusieurs palettes, sans code, pour votre compte.

Styler le contenu de l’éditeur de blocs

Votre feuille admin.css s’applique aussi à l’interface de l’éditeur de blocs (barre d’outils, panneaux latéraux), mais pas au contenu que vous rédigez : depuis WordPress 7.1, celui-ci est toujours affiché dans un cadre séparé (iframe), qui ne reçoit pas cette feuille. Seule exception, par compatibilité : une feuille qui contient un sélecteur .editor-styles-wrapper ou .wp-block y est recopiée, avec un avertissement dans la console du navigateur.

Pour mettre en forme ce contenu, ajoutez plutôt une feuille dédiée avec la fonction add_editor_style(), toujours dans le fichier functions.php de votre thème enfant :

/**
 * Style the content of the block editor with the child theme's editor.css file.
 */
function wpc_editor_styles() {
	add_theme_support( 'editor-styles' );
	add_editor_style( 'css/editor.css' );
}
add_action( 'after_setup_theme', 'wpc_editor_styles' );

Créez ensuite le fichier editor.css dans le même dossier css : WordPress l’applique à la zone de contenu de l’éditeur. La ligne add_theme_support( 'editor-styles' ) est indispensable avec un thème classique, un thème à blocs activant ce support automatiquement. Enfin, pour une feuille réservée à l’interface de l’éditeur, sans effet sur les autres écrans de l’administration, utilisez le crochet enqueue_block_editor_assets à la place de admin_enqueue_scripts.

Cette technique est similaire aux tutoriels concernant l’insertion d’un logo personnalisé dans la zone de connexion ou encore l’ajout d’icônes à vos contenus personnalisés. Faites-en bon usage !

Pour personnaliser encore le back-office, voyez comment modifier le pied de page de l’administration.

Avatar de Aurélien Denis

Protégez votre site WordPress

Vos données sont précieuses,
ne prenez pas le risque de tout perdre.
Confiez-moi votre maintenance !

Ces articles devraient t’intéresser…

30 réponses

  1. Avatar de kyodev
    kyodev

    il est mieux et plus universel d’utiliser `get_stylesheet_directory_uri()` (au lieu de get_template_directory_uri) pour couvrir l’utilisation éventuelle d’un thème enfant

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Tout à fait !

  2. Avatar de Alain Barberis
    Alain Barberis

    Bonjour Aurélien
    Je viens de lire et mettre en pratique ce post.
    C’est plus que parfait.
    Cet article, sauf erreur de ma part, ne concerne que le rôle Administrateur.
    J’ai créé un rôle « Ouvreur » avec un plug et je voudrais bien que toutes mes modifications du back office ne concerne que ce rôle.
    Question : que dois je mettre dans le function.php pour que le fichier css ne concerne que le rôle ouvreur.
    Je ne connais rien en prog et je fais tout en piquant des bouts de lignes de commande sur la toile.
    Si tu pouvais m’aider un peu, cela serait nickel.
    Merci

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Hello,

      il n’y aucune restriction de rôle / capacité dans le tutoriel. Si tu vérifies dans la source, vois-tu la CSS ?

  3. Avatar de momo-frmomo-fr
    momo-frmomo-fr

    Là ça dois marcher bien entendu, pour l’instant j’ai hacké mes styles dans wp-admin.min.css, j’y reviendrais.
    Merci Aurélien.

  4. Avatar de momo-fr
    momo-fr

    9a ne marche pas pour moi sous WP 4.3 avec un thème enfant (d’Enfold), pas d’appel à la feuille de style dans le … snif :-((

    1. Avatar de momo-fr
      momo-fr

      Dans le head… sorry

      1. Avatar de Aurélien Denis
        Aurélien Denis

        Et avec un get stylesheet directory uri ?

  5. Avatar de Francis Boudreau
    Francis Boudreau

    Merci pour ce truc! Simple et efficace.

  6. Avatar de loic
    loic

    Bonjour,
    faut-il obligatoirement utiliser la propriété !important quand on utilise un thème enfant ?

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Non en aucune manière.

  7. Avatar de michelpidou
    michelpidou

    Bonjour, j’ai suivi ce tuto mais je n’ai plus accés à mon site, j’ai maintenant j’ai une page blanche.

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Sans doute une erreur de code. Il faut intervenir directement depuis le client FTP pour éviter ce type d’erreur… supprimez les lignes insérées pour revenir à l’état initial.

  8. Avatar de roberta
    roberta

    Wesh aurelien,

    alors c’est quand que tu passe au ondar show
    pour handidicap handi pas cap ?

  9. Avatar de luna
    luna

    Bonjour,
    Je suis en train de tester cette technique sur un theme enfant, mais il ne lit pas la feuille css. Est ce normal? Dois-je ajouter d’autres lignes de code?

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Oui il faut utiliser la fonction get_stylesheet_directory_uri à la place de get_template_directory_uri qui est prévue pour les thèmes enfants. Théoriquement, cela devrait fonctionner.

  10. Avatar de digne
    digne

    bonjour mes pages ne sont pas liées à mes catégories comment peut on faire. De plus, lorsque je poste un article écris dans ma pagination de thème il n’y a pas de possibilités de hashtag… comment faire je suis perdu, j ai le thème megazine

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Hum je pense que vous mélangez de multiples concepts… je vous invite à poser vos questions sur le forum de WordPress francophone.

  11. Avatar de david
    david

    Je souhaite savoir s’il est possible d’ajouter différentes feuilles de style( CSS) pour les différents navigateurs (IE ,Moz,safari..) sous wordpress ? ( thème twenty-ten)
    j’ai des gros probleme d’incompatibilité , » je galerrr grave !:p »
    merci .
    cdt.

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Généralement, les bugs surviennent sous IE… c’est pour cela que l’on utilise parfois des CSS dédié. Plus d’infos ici : http://en.wikipedia.org/wiki/Conditional_comment

      Pour les autres, tu ne dois pas avoir de grosses différences. Si c’est le cas, ton CSS est pas mal codé.

  12. Avatar de Marie
    Marie

    Bonjour,

    Je souhaiterais, non pas changer le CSS de tout mon site, mais uniquement celui d’une page, qui me servirait de page d’accueil. Il ne s’agirait pas de changer des couleurs ou ce genre de choses, mais de faire une mise en page en positionnant 9 blocs (3 blocs par ligne, sur 3 lignes donc), contenant chacun soit une image, soit un bouton facebook, soit un player mp3.

    J’arrive très bien à le faire en installant tout ça dans un tableau, mais il paraît que ce n’est pas bien de passer par cette méthode.
    Est-ce faisable de rajouter toutes ces infos dans ma feuille de style WP ?

    Merci pour votre aide !
    Marie

    1. Avatar de Philippe
      Philippe

      Bonjour @Marie , en effet les tableaux sont de moins en moins de bonnes pratiques en html/css. Pour faire le design en bloc, je te conseille le framework css 960gs. Il permet de quadriller et disposer tes blocs sur une grille avec des « height » augmentant suivant la classe la grille. Par exemple, pour une grille de 12, les classes grid_3 (vide) + grid_6 (logo par exemple) + grid_3(vide aussi) permettrait de centrer un logo. Le site : http://960.gs/

  13. Avatar de Kapoué
    Kapoué

    Nickel ! Je me demande pourquoi le CSS du front et du back est séparé et que l’on soit obligé de passer par une function pour avoir droit au CSS ? Bref, ça fonctionne parfaitement, comme d’hab. Merci 🙂

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Ben parce que le contraire serait surprenant ! 🙂

  14. Avatar de Sebastien
    Sebastien

    Bonjour,

    Puisqu’on parle des css du backoffice.
    Est-ce qu’il y a une technique pour différencier les styles en fonction du type de contenu (sur des custom Type).
    Je parle ici des css du fichier editor-style.css et non de l’apparence global du BO.

    Merci.

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Je dirais oui mais je n’ai pas testé ce type de demande… donc à voir !

  15. Avatar de PtitLoop
    PtitLoop

    Ce serait sympa de nous mettre quelques exemples téléchargeables qui nous serviraient de base de travail et que l’on pourrait modifier à notre guise..

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Je manque sacrément de temps ces jours-ci… Je vais voir ce que je peux faire. 🙂

    2. Avatar de Cybercraft
      Cybercraft

      Eventuellement, je peux lister les grandes classes CSS du back-end dans un autre tuto en corrélation avec celui-ci.

      Qu’en penses-tu Aurélien ?

      1. Avatar de Aurélien Denis
        Aurélien Denis

        Good idea !