¿Mejor manera de sobrescribir el CSS de un plugin?

7 oct 2010, 13:54:30
Vistas: 52.1K
Votos: 39

Actualmente, uso la especificidad CSS para sobrescribir los estilos de los plugins. Prefiero esto para editar el plugin ya que causa menos dolores de cabeza cuando se actualiza.

Sería bueno si mi hoja de estilos se cargara después de los plugins, así solo tendría que ser igual de específico, no más. Esto haría que mis hojas de estilo sean mucho más limpias.

1
Comentarios

voto a favor por enseñarme sobre la Especificidad de CSS, nunca había oído hablar de ello antes de tu pregunta y me ayudó un montón!

luke_mclachlan luke_mclachlan
18 nov 2016 17:35:06
Todas las respuestas a la pregunta 7
1
21

Como sugieres, el enfoque más elegante es cuando tus anulaciones de CSS se cargan después del CSS inyectado por los plugins. Esto es bastante fácil de lograr - solo necesitas asegurarte de que tu header.php llame a wp_head() antes de que haga referencia a tu hoja de estilos:

<head>
    <!-- todo el preámbulo habitual va aquí -->

    <?php wp_head(); ?>

    <link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" />
</head>
8 ene 2011 18:08:02
Comentarios

¿Y qué pasa si estoy usando un tema hijo? No me gusta sobrescribir el header.php de mi tema padre.

Jules Jules
7 nov 2012 12:10:42
2
19

Existen varias formas en que los plugins pueden manejar CSS.

  • Mejor caso: el plugin encola el CSS y proporciona una opción para desactivarlo (desactívalo, copia el código CSS en tu hoja de estilos y listo);
  • Buen caso: el plugin engancha una función que encola el estilo (desengancha la función, engancha la tuya con modificaciones si es necesario);
  • Caso habitual: el plugin encola el CSS directamente. Consulta ¿Cómo desencolar un script? (se aplica también a estilos). Versión corta: habrá una función dequeue en futuras versiones de WP, por ahora se puede solucionar con wp_deregister_*
  • Mal caso: el plugin imprime el CSS entre un montón de otras cosas. Caso por caso...

En general, en mi opinión, es mejor y más fácil desactivar hojas de estilo separadas e incorporarlas en las tuyas para minimizar problemas y mejorar el rendimiento (menos archivos que cargar).

7 oct 2010 14:09:30
Comentarios

¿Cómo sabría cuál es?

IanEdington IanEdington
18 nov 2015 02:30:46

Principalmente mirando el código. :)

Rarst Rarst
18 nov 2015 10:36:52
1

Otra forma bastante elegante es utilizar la especificidad de CSS.

Así que si el CSS del plugin dice:

div.product div.images img {
  ......
}

tú defines en tu CSS:

body div.product div.images img {
  ......
}

También puedes ver la respuesta de Michael Rader para una pregunta similar.

5 ene 2012 18:36:50
Comentarios

¡Vale, muchas gracias! Esta sería la respuesta aceptada para mí. Simplemente usa el archivo style.css general y la especificidad funciona de maravilla.

Luca Reghellin Luca Reghellin
18 may 2015 12:44:48
0

Guardo una copia del CSS del plugin "not willing" en la carpeta del tema y lo importo al CSS del tema añadiendo

@import url('nombre-del-plugin-css.css');

a este (reemplazando, por supuesto, el nombre del .css por el que estoy inyectando). Luego modifico la copia del CSS en la carpeta del tema y la guardo en el servidor como hago con los demás archivos. Ah, sí, a veces puede ser necesario "clavar" los IDs o clases alteradas asignándoles un "!important".

No sé si esto es lo más moderno, pero no hace daño y funciona perfectamente.

27 jul 2011 04:49:03
0

Terminé usando !important para mi CSS personalizado y eso anuló los estilos del plugin con el que estaba teniendo problemas. El desarrollador del plugin estaba usando !important en todo el CSS del plugin y por eso no podía sobrescribirlo sin usar !important.

body {
font-family: "Open Sans", Arial, sans-serif !important;
font-weight: 300 !important;    
}
18 feb 2017 17:13:19
0

Para sobrescribir el CSS de un plugin que ya estaba usando especificidad y !important, utilicé el ID para sobrescribir las clases. Esto ayudó a limpiar un poco mi código. Por supuesto, tampoco es una solución perfecta ya que solo funciona cuando hay IDs asignados a los elementos además de clases.

También podrías usar selectores de atributos en teoría. Sin embargo, aún no he puesto esa teoría a prueba.

28 ago 2013 09:02:32
0
-1

Para sobrescribir el CSS de un plugin que ya estaba utilizando especificidad y !important, usé el ID para sobrescribir las clases. Esto ayudó a limpiar un poco mi código. Por supuesto, tampoco es una solución perfecta ya que solo funciona cuando hay IDs asignados a los elementos además de las clases.

En teoría, también podrías usar selectores de atributos. Sin embargo, todavía no he puesto esa teoría a prueba.

3 nov 2017 10:51:35