Les développeurs de thèmes WordPress peuvent utiliser un fichier theme.json pour rationaliser un processus qui reposait auparavant en grande partie sur le PHP. Cependant, vous pouvez toujours utiliser vos compétences en HTML, JavaScript et PHP pour construire vos thèmes – et CSS ne fait pas exception. En fait, vous pouvez utiliser les propriétés CSS personnalisées dans theme.json, ce qui peut améliorer la phase de conception et offrir une plus grande flexibilité.

Dans ce guide, nous abordons les propriétés CSS personnalisées de front pour explorer comment elles fonctionnent avec WordPress et theme.json. Mais avant d’en arriver là, résumons theme.json, l’édition complète du site (FSE) et la manière dont CSS s’intègre dans cette nouvelle approche de la conception.

Comment theme.json fonctionne avec WordPress

Le fichier theme.json est apparu pour la première fois dans WordPress 5.8. Il s’agit d’une manière révolutionnaire de concevoir les thèmes WordPress, en utilisant la syntaxe JSON pour construire un fichier de configuration. WordPress le lit et applique les résultats sans avoir besoin de beaucoup de PHP, CSS ou JavaScript.

Fenêtre de l'éditeur de code montrant le contenu d'un fichier theme.json pour un thème WordPress. La structure JSON définit les paramètres du thème, y compris les versions du schéma, les motifs et les paramètres de couleur. En arrière-plan, un paysage pittoresque avec des montagnes, des forêts et des champs en terrasses est visible.
Un fichier theme.json dans un éditeur de code.

Les réglages globaux et les styles de FSE contrôlent divers aspects visuels de votre thème. Il peut s’agir de palettes de couleurs typiques et de typographie, mais aussi d’options de mise en page et de styles de blocs et d’éléments individuels.

Si FSE est intuitif, puissant, adaptable et facile à utiliser, theme.json peut aider à combler le fossé entre l’utilisateur final et le développeur. Presque toutes les options offertes par theme.json sont également visibles dans l’éditeur de site.

L'interface de l'éditeur de site WordPress, qui montre la page d'accueil d'un site web sur le côté droit de l'écran, tandis que la barre latérale noire de gauche propose des options pour la navigation, les styles, les pages, les modèles et les motifs.
L’interface principale de l’éditeur de site dans WordPress.

L’utilisation de theme.json présente de nombreux avantages pour la création de thèmes WordPress. Il y a plusieurs raisons à cela :

  • Vous disposez d’un emplacement central pour la configuration du design de votre thème, ce qui facilite sa gestion et sa mise à jour.
  • Il y a moins d’obscurité entre l’expérience frontend, l’éditeur de site, et la base de code d’un thème.
  • L’utilisation de theme.json offre une compatibilité avec l’avenir du développement et de la conception de WordPress.
  • La fonctionnalité intégrée de WordPress signifie que vous réduisez la nécessité pour l’utilisateur d’appliquer des feuilles de style CSS personnalisées.

Voyons comment theme.json est lié aux réglages et styles globaux de FSE.

Un aperçu des réglages globaux et des styles de FSE

FSE représente une nouvelle ère dans le développement de thèmes WordPress, et les réglages et styles globaux en sont le fer de lance. Cela permet aux utilisateurs de personnaliser presque tous les aspects de l’apparence d’un site grâce à la fonctionnalité de l’éditeur de site.

L'éditeur de site WordPress montre les champs de saisie du panneau Styles dans la barre latérale droite. Il vous permet d'ajuster les paramètres de typographie. La partie gauche montre une vue partielle d'une page web au thème bleu.
Le panneau Styles dans l’éditeur de site WordPress.

Ici, vous pouvez ajuster certains aspects de la mise en page de votre thème à l’aide d’options qui nécessitaient auparavant un CSS ou une extension de construction de pages tiers. La modification des marges, de la marge intérieure et des bordures en sont des exemples, mais il y en a bien d’autres.

L'éditeur de site WordPress, montrant le panneau de personnalisation de la mise en page. Il vous permet de personnaliser les dimensions du contenu, le remplissage et l'espacement des blocs. La partie gauche de l'écran montre une vue partielle d'une page web au thème bleu.
Travailler avec des éléments CSS typiques tels que les marges et la marge intérieure dans l’éditeur de site.

Vous pouvez même activer ou désactiver la plupart de ces fonctionnalités sur theme.json (ou dans le fichier block.json d’un bloc). Cela permet de personnaliser l’interface utilisateur en même temps que la conception générale du site.

Cependant, les options à votre disposition, bien que nombreuses, ne couvrent pas tous les besoins. C’est particulièrement vrai si vous créez un thème à partir de zéro. Les propriétés CSS personnalisées peuvent vous aider à résoudre ce problème.

Comprendre les propriétés CSS personnalisées

En PHP, en JavaScript et dans presque tous les langages de programmation, les variables contiennent les valeurs de divers éléments de votre code. Par exemple, vous pouvez stocker des valeurs telles que des noms, des dates et des nombres et les utiliser dans votre programme.

Les variables CSS3 – ou propriétés personnalisées CSS, comme nous les appelons dans cet article – sont prises en charge par la plupart des navigateurs actuels. Internet Explorer ne les prend pas en charge, pas plus qu’Opera Mini. Cependant, les principaux navigateurs les prennent tous en charge.

Tableau de compatibilité des variables CSS (propriétés personnalisées) entre les différents navigateurs web. Le graphique montre une utilisation globale élevée de 97,05 % et indique une prise en charge généralisée dans les principaux navigateurs de bureau et mobiles.
Le site Web Can I Use indique la prise en charge actuelle des propriétés CSS personnalisées.

Les propriétés personnalisées CSS vous permettent de stocker des valeurs à réutiliser dans votre feuille de style. Il s’agit d’un moyen puissant de créer des feuilles de style CSS plus dynamiques et plus souples. Vous pouvez mettre à jour plusieurs règles de style en modifiant une seule valeur.

Le concept de variables CSS n’est pas entièrement nouveau. Les pré-processeurs tels que Sass utilisent une fonctionnalité similaire. Par exemple, prenez l’exemple suivant de Sass :

$font-stack: Helvetica, sans-serif
$primary-color: #333

body
  font: 100% $font-stack
  color: $primary-color

Ce traitement est un CSS typique :

body {
  font: 100% Helvetica, sans-serif;
  color: #333;
}

Toutefois, les propriétés CSS personnalisées transmettent directement ces données au navigateur. Cela présente certains avantages :

  • Mises à jour dynamiques. Contrairement à la plupart des variables de pré-processeur, vous pouvez mettre à jour les propriétés CSS personnalisées « à la volée » à l’aide de JavaScript.
  • Nature en cascade. Les propriétés personnalisées suivent la cascade CSS, ce qui vous offre une plus grande flexibilité et une meilleure prise en compte du contexte.

Les propriétés personnalisées seront également plus performantes en réduisant la redondance du code. Des feuilles de style plus petites se traduisent par des temps de chargement plus rapides.

Syntaxe des propriétés CSS personnalisées

Comme pour les variables typiques du pré-processeur, la syntaxe des propriétés CSS personnalisées est simple. Elle utilise des doubles traits d’union plutôt que des signes de dollar pour spécifier une propriété :

:root {
  --primary-color: #007bff;
}

À partir de là, vous utilisez la fonction var() pour attribuer ces propriétés aux éléments :

.button {
  background-color: var(--primary-color);
}

Notez que vous pouvez également attribuer des propriétés personnalisées à l’aide de la propriété @. Cependant, comme vous le comprendrez bientôt, WordPress simplifie l’ensemble de ce processus.

Où pouvez-vous utiliser les propriétés CSS personnalisées ?

La polyvalence est de mise lorsqu’il s’agit de propriétés personnalisées CSS. Avec WordPress et theme.json, vous avez plusieurs façons de les utiliser :

  • Pré-réglages : Vous pouvez définir des pré-réglages de couleur, de police et d’espacement.
  • Styles de blocs : Les blocs individuels peuvent utiliser des propriétés personnalisées pour un style cohérent.
  • Styles globaux : Les propriétés personnalisées sont très utiles pour la conception de sites entiers.

Vous pouvez créer des propriétés entièrement personnalisées pour l’usage que vous souhaitez. Examinons un exemple pratique de l’utilisation des propriétés personnalisées dans votre fichier theme.json:

{
  "settings": {
    "color": {
      "palette": [
        {
          "slug": "primary",
          "color": "#007bff",
          "name": "Primary"
        }
      ]
    },
    "custom": {
      "line-height": {
        "body": 1.5,
        "heading": 1.2
      }
    }
  },
  "styles": {
    "typography": {
      "lineHeight": "var(--wp--custom--line-height--body)"
    },
    "blocks": {
      "core/heading": {
        "typography": {
          "lineHeight": "var(--wp--custom--line-height--heading)"
        }
      }
    }
  }
}

Ici, nous définissons une couleur pré-définie et utilisons la propriété custom pour définir les valeurs line-height pour les titres et le corps de la page. WordPress génère des propriétés CSS pour les éléments que vous définissez à l’aide de custom. Plus loin, nous pouvons assigner ces propriétés personnalisées à différents styles, réglages, blocs, etc.

Les avantages de l’utilisation des propriétés CSS personnalisées

Vous avez peut-être déjà une idée de la manière dont les propriétés CSS personnalisées peuvent vous aider à développer des thèmes. Néanmoins, il y a de nombreux avantages à noter.

Nous avons déjà parlé de modularité et de réutilisation. Toutes les valeurs communes que vous définissez en tant que propriétés personnalisées favorisent la cohérence et réduisent la redondance. Cette redondance se traduira par de meilleures performances potentielles pour votre thème.

Pour l’utilisateur final, les propriétés personnalisées offrent plusieurs avantages :

  • Une personnalisation simplifiée. Les utilisateurs et les propriétaires de sites peuvent personnaliser un thème sans avoir besoin de connaissances CSS complexes. Une fois que vous avez exposé les variables via theme.json, les utilisateurs peuvent accéder aux réglages via l’éditeur de site.
  • Meilleure compatibilité avec FSE. Les propriétés personnalisées s’alignent sur les principes FSE, ce qui vous permet de créer des thèmes plus souples et plus dynamiques.
  • Maintenance et mises à jour plus faciles. Si vous devez mettre à jour des valeurs communes à l’ensemble de votre thème, une propriété personnalisée vous permet de les modifier à un seul endroit. Cela rationalise votre maintenance et rend les mises à jour et les ajustements plus faciles à gérer.

Dans l’ensemble, les propriétés personnalisées peuvent améliorer le flux de travail du développement de votre thème. Leur détermination est également plus simple que l’utilisation de variables CSS typiques.

Comment définir des propriétés CSS personnalisées dans theme.json ?

Entrons dans les aspects pratiques de la définition et de l’utilisation des propriétés CSS personnalisées dans theme.json. La première étape est d’apprendre à les écrire.

Syntaxe et conventions de nommage

WordPress propose la propriété custom pour faciliter les définitions. Elle est légèrement plus facile à utiliser que la propriété @ ou les définitions dans les pseudo classes, et utilise le format standard clé/valeur :

{
  "settings": {
    "custom": {
      "property-name": "value"
    }
  }
}

Dans les coulisses, WordPress traitera cette définition et génèrera une propriété CSS personnalisée utilisant des doubles traits d’union :

--wp--custom--<custom-element>

--wp--custom-- fera toujours partie de votre propriété CSS et n’utilisera pas la casse camel. Par exemple, si vous définissez lineHeight comme une propriété personnalisée, WordPress la transformera en « casse kebab »

--wp--custom--line-height

En ce qui concerne les conventions de nommage, vous pouvez utiliser la casse camel si vous le souhaitez, mais nous vous conseillons d’utiliser la casse kebab pour les noms de vos propriétés personnalisées. Ceci est cohérent avec les conventions de nommage de WordPress, améliore la lisibilité et réduit les erreurs de traitement.

Remarque : les propriétés personnalisées CSS utilisent des doubles tirets car le groupe de travail CSS du W3C souhaite également vous encourager à utiliser Sass (qui utilise des signes de dollar pour définir les propriétés). Ainsi, vous avez la possibilité d’utiliser les deux pour améliorer vos conceptions.

WordPress définit déjà certaines propriétés personnalisées – ou du moins, les thèmes ont la possibilité de le faire. Cela signifie que vous verrez des variables CSS dans theme.json sans déclaration explicite :

{
  "settings": {
    "color": {
      "palette": [
        {
          "slug": "primary",
          "color": "var(--wp--preset--color--primary)",
          "name": "Primary"
        }
      ]
    },
    "custom": {
      "spacing": {
        "small": "1rem",
        "medium": "2rem",
        "large": "3rem"
      }
    }
  },
  "styles": {
    "spacing": {
      "blockGap": "var(--wp--custom--spacing--medium)"
    }
  }
}

Dans cet exemple, nous définissons une couleur primaire en utilisant une couleur prédéfinie existante. Ensuite, nous définissons des propriétés d’espacement personnalisées, puis nous les définissons à l’aide de var().

Cela signifie que nous n’avons pas besoin de coder les valeurs en dur dans theme.json. De plus, les utilisateurs peuvent mettre à jour ces valeurs dans l’éditeur de site et les propager dans l’ensemble du thème.

Pré-réglages et propriétés personnalisées

Bien entendu, theme.json vous permet également de définir des pré-réglages pour les couleurs, les tailles de police et d’autres éléments communs du thème. D’autre part, vous pouvez utiliser des propriétés personnalisées pour toute valeur que vous souhaitez réutiliser dans votre thème.

La principale différence réside dans les conventions d’appellation et l’accessibilité. Les utilisateurs ne pourront pas accéder aux propriétés personnalisées dans l’éditeur de site sans un travail supplémentaire de votre part. Avec les pré-réglages, WordPress génère du CSS qui ressemble à la façon dont il traite les propriétés personnalisées :

{
  "settings": {
    "color": {
      "palette": [
        {
          "slug": "primary",
          "color": "#007bff",
          "name": "Primary"
        }
      ]
    },
    "custom": {
      "fontFamily": {
        "base": "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif",
        "headings": "'Helvetica Neue', Helvetica, Arial, sans-serif"
      }
    }
  }
}

Une fois que WordPress les a traitées, vous pouvez voir les différences inhérentes :

--wp--preset--primary: #007bff;
--wp--custom--font-family--base: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif";
--wp--custom--font-family--headings: "'Helvetica Neue', Helvetica, Arial, sans-serif";

Notez que l’imbrication ultérieure des propriétés utilisera des traits d’union doubles, même après avoir converti la casse camel en casse kebab.

CSS global et spécifique à un bloc vs propriétés CSS personnalisées

Avec WordPress classique, vous utilisiez des feuilles de style CSS supplémentaires et personnalisées pour concevoir les éléments de votre thème. C’est toujours le cas avec theme.json et FSE, bien que l’approche soit différente des propriétés CSS personnalisées.

Si vous vous rendez dans l’éditeur de site et que vous accédez à l’écran Styles, vous remarquerez la section CSS supplémentaires. Cette section fonctionne de la même manière que le panneau CSS personnalisé dans les installations WordPress classiques :

Une vue partielle de l'éditeur de site WordPress montrant les liens vers les blocs et les paramètres CSS supplémentaires. La partie gauche de l'écran affiche une vue partielle d'un bâtiment sur fond de ciel bleu.
La section CSS supplémentaire dans l’éditeur de site WordPress.

Il s’agit d’un moyen d’ajouter une personnalisation CSS globale à un thème. Cependant, il s’agit en fait d’un moyen de donner aux utilisateurs la possibilité d’ajouter des feuilles de style CSS. Vous pouvez également l’utiliser pour apporter de petites modifications mineures qui ne justifient pas une feuille de style complète.

Dans theme.json, vous utilisez la propriété css pour définir toute feuille de style CSS supplémentaire que vous souhaitez ajouter :

{
  "version": 3,
    "styles": {
      "css": "margin: 0"
    }
}

Notez qu’il n’est pas nécessaire d’utiliser des points-virgules pour terminer les déclarations CSS. Vous pouvez également définir des feuilles de style CSS personnalisées pour les blocs :

{
  "version": 2,
  "styles": {
    "blocks": {
      "core/post-title": {
        "css": "letter-spacing: 1px;"
      }
    }
  }
}

Chaque fois que vous définissez une feuille de style CSS de cette manière dans theme.json, vous la verrez dans les champs CSS supplémentaires de l’éditeur de site. Toutefois, n’oubliez pas que rien de ce que vous déclarez à l’aide de css n’est une propriété CSS personnalisée.

Utiliser le sélecteur esperluette (&)

Tout comme Sass, WordPress supporte également le sélecteur esperluette, à quelques différences près. Dans ce cas, c’est un excellent moyen de cibler des éléments et des propriétés imbriqués. Cela peut être utile si vous choisissez de déclarer des propriétés CSS personnalisées pour des blocs individuels.

Par exemple, prenez ce qui suit :

…
"styles": {
  "blocks": {
    "core/table": {
      "css": "color:#333 & th{ background:#f5f5f5; }"
    }
…

Ceci définit une couleur de texte et une couleur d’arrière-plan pour l’élément d’en-tête du tableau. Une fois que WordPress l’a traité, vous obtenez un CSS propre et simple :

.wp-block-table > table {
  color: #333;
}

.wp-block-table > table th {
  background: #f5f5f5;
}

Les sélecteurs esperluette sont excellents si vous souhaitez étendre le CSS que vous ciblez. Une façon compréhensible de penser au sélecteur est qu’il aide à séparer vos éléments CSS. Prenez l’exemple suivant :

{
  "version": 3,
  "styles": {
    "blocks": {
      "core/avatar": {
        "css": "& img {border-radius: 999px}"
      }
    }
  }
}

Ceci ajoute un rayon de bordure à un avatar et produit le CSS comme vous vous y attendez :

.wp-block-image img {
  border-radius: 999px;
}

Cependant, sans l’esperluette, WordPress joindrait vos déclarations :

…
​​.wp-block-imageimg
…

L’utilisation du sélecteur d’esperluette pour vos propriétés CSS personnalisées sera quelque chose que vous ferez régulièrement.

Le rôle de Kinsta dans le soutien au développement moderne de WordPress

Votre choix d’hébergement est tout aussi important que n’importe quel langage de codage, pré-processeur ou autre élément technique. Sans un hébergeur de qualité à vos côtés, vous ne pourrez pas bénéficier des performances et des outils de theme.json ou FSE.

Kinsta peut être au cœur de votre flux de travail, grâce à nos outils de développement. Vous pouvez commencer avec DevKinsta – notre environnement de développement local qui utilise des conteneurs Docker pour isoler votre installation WordPress :

L'interface DevKinsta montre la base de données et les paramètres de configuration de WordPress. Elle affiche les détails de la connexion, y compris l'hôte, le port, le nom de la base de données et la version de WordPress. L'interface montre également des options pour activer le débogage et les mises à jour automatiques de WordPress.
L’interface principale de DevKinsta.

Une fonctionnalité utile est la capacité de DevKinsta à pousser et à tirer des données entre votre machine locale et vos environnements de staging Kinsta :

Vue partielle de l'interface DevKinsta affichant des informations sur le site et des options de contrôle. L'interface présente des boutons pour ouvrir le site, le synchroniser, accéder au gestionnaire de base de données et à l'administrateur WordPress. Un menu déroulant révèle les options pour pousser vers ou tirer de Kinsta. Le type de site est indiqué comme étant WordPress, avec des informations visibles mais partielles sur l'hébergeur.
Les options pour pousser vers ou tirer de Kinsta dans DevKinsta.

Cela vous permet de tester vos thèmes dans un environnement de production avant de commencer à les distribuer. Lorsque vous travaillez avec des propriétés CSS personnalisées, vous pouvez vous assurer qu’elles fonctionnent dans différents contextes. L’API de Kinsta peut prendre en charge votre pipeline CI/CD lorsque vous êtes prêt à passer en production.

D’autres aspects de l’architecture de Kinsta vous aideront dans l’ensemble de votre configuration de développement. Par exemple, Kinsta supporte Git, ce qui facilite le contrôle de version de vos fichiers de thème, y compris theme.json. Pour l’itération des propriétés personnalisées, ou simplement l’expérimentation de différentes configurations, vous voudrez savoir que vous disposez d’une option de retour en arrière.

Enfin, si vous choisissez d’utiliser votre thème sur un serveur Kinsta, notre cache Edge augmente les performances de theme.json jusqu’à 80 %. Le fait d’avoir un site web qui fonctionne rapidement, quel que soit le navigateur de l’utilisateur, vous permettra de vous assurer que vos ajouts personnalisés s’affichent rapidement.

Résumé

Tout comme theme.json est un puissant fichier de configuration pour créer des thèmes WordPress flexibles et faciles à entretenir, les propriétés CSS personnalisées sont cruciales pour le flux de travail. C’est ainsi que vous construirez et déclarerez les CSS pour les éléments que l’éditeur de site n’atteint pas. Elles seront également essentielles si vous construisez vos propres blocs ou si vous souhaitez simplement développer des thèmes WordPress uniques avec une profondeur de personnalisation ultime. De plus, vous avez également la possibilité de partager ce CSS avec les utilisateurs par le biais de l’éditeur de site.

Les propriétés CSS personnalisées feront-elles partie de votre flux de travail pour le développement de votre thème ? Si oui, comment allez-vous les utiliser ? Faites-nous part de vos commentaires dans la section ci-dessous !

Jeremy Holcombe Kinsta

Rédacteur en chef du contenu et du marketing chez Kinsta, développeur web WordPress et rédacteur de contenu. En dehors de WordPress, j'aime la plage, le golf et le cinéma. J'ai aussi des problèmes avec les personnes de grande taille ;).