Actuellement, j'utilise la spécificité CSS pour remplacer les styles de plug-in. Je préfère ceci pour l'édition du plugin car cela fait moins de maux de tête lorsque vous mettez à jour.
Ce serait bien si ma feuille de style était chargée après les plugins, de sorte que je n’aie besoin que d’être aussi spécifique, pas plus. Cela rendrait mes feuilles de style beaucoup plus jolies.
Comme vous le suggérez, l'approche la plus élégante consiste à charger vos remplacements CSS après l'injection du CSS par les plugins. C'est assez facile à réaliser - vous devez simplement vous assurer que votre header.php
appelle wp_head()
avant de faire référence à votre feuille de style:
<head>
<!-- all the usual preamble stuff goes here -->
<?php wp_head(); ?>
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" />
</head>
Les plugins peuvent gérer les CSS de plusieurs manières.
wp_deregister_*
Globalement, à mon avis, il est préférable et plus facile de désactiver des feuilles de style distinctes et de les incorporer dans le vôtre afin de minimiser les problèmes et d’améliorer les performances (moins de fichiers à récupérer).
J'enregistre une copie du fichier CSS du plug-in "ne veut pas" dans le dossier du thème et l'importe dans le css du thème en ajoutant
@import url('name-of-the-plugin-css.css');
(en remplaçant, bien sûr, le nom du fichier .css par celui que j’injecte). Ensuite, je modifie la copie css dans le dossier du thème et l’enregistre sur le serveur comme je le fais pour les autres fichiers. Oh oui, il est parfois nécessaire de "clouer" les identifiants ou les classes modifiées en leur attribuant un "! Important".
Je ne sais pas si cela est à la pointe de la technologie, mais cela ne fait aucun mal et fonctionne très bien.
Une autre manière assez élégante consiste à utiliser la spécificité de CSS.
Donc si le css du plugin dit:
div.product div.images img {
......
}
vous définissez dans votre css:
body div.product div.images img {
......
}
Voir également la réponse de Michael Rader pour une question similaire.
Pour remplacer le css du plugin, qui utilisait déjà la spécificité et! Important, j'ai utilisé l'id pour remplacer les classes. Cela a un peu nettoyé mon code. Bien sûr, ce n'est pas non plus une solution parfaite dans la mesure où cela ne fonctionne que s'il existe des identifiants attribués à des éléments ainsi qu'à des classes.
Vous pouvez également utiliser des sélecteurs d'attributs en théorie. Cependant, je n'ai pas encore testé cette théorie.
J'ai fini par utiliser! Important pour mon css personnalisé et cela remplace le style du plugin avec lequel j'avais des problèmes. Le développeur du plugin utilisait! Important tout au long du plugin css et c’est pourquoi je ne pouvais pas l’écraser sans! Important.
body {
font-family: "Open Sans", Arial, sans-serif !important;
font-weight: 300 !important;
}