Cea mai bună metodă de a suprascrie CSS-ul unui plugin?

7 oct. 2010, 13:54:30
Vizualizări: 52.1K
Voturi: 39

În prezent, folosesc specificitatea CSS pentru a suprascrie stilurile plugin-urilor. Prefer această metodă pentru editarea plugin-ului deoarece creează mai puține probleme când faci actualizări.

Ar fi util dacă foaia mea de stil s-ar încărca după plugin-uri, astfel încât să trebuiască să fiu doar la fel de specific, nu mai mult. Acest lucru ar face foile mele de stil mult mai curate.

1
Comentarii

vot în sus pentru că m-ai învățat despre Specificitatea CSS, nu auzisem niciodată de asta înainte de întrebarea ta și m-a ajutat foarte mult!

luke_mclachlan luke_mclachlan
18 nov. 2016 17:35:06
Toate răspunsurile la întrebare 7
1
21

După cum sugerezi, cea mai elegantă abordare este atunci când suprascrierile tale CSS sunt încărcate după CSS-ul injectat de pluginuri. Acest lucru este destul de ușor de realizat - trebuie doar să te asiguri că fișierul tău header.php apelează wp_head() înainte de a face referire la fișierul tău de stiluri:

<head>
    <!-- toate elementele preliminare obișnuite se pun aici -->

    <?php wp_head(); ?>

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

Și dacă folosesc un child theme? Nu vreau să suprascriu fișierul header.php al temei părinte.

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

Există mai multe moduri în care plugin-urile pot gestiona CSS-ul.

  • cel mai bun caz: plugin-ul încarcă CSS-ul în coadă și oferă opțiunea de a-l dezactiva (dezactivează-l, copiază codul CSS în fișierul tău de stiluri și fii fericit);
  • caz bun: plugin-ul folosește un hook pentru funcția care încarcă stilul (deconectează funcția, conectează-o pe a ta cu modificări dacă este necesar);
  • caz obișnuit: plugin-ul încarcă CSS-ul direct. Vezi Cum să scoți un script din coadă? (se aplică și stilurilor). Varianta scurtă - va exista o funcție de deque în viitoarele versiuni de WP, deocamdată se poate folosi wp_deregister_*
  • caz rău: plugin-ul afișează CSS-ul printre o grămadă de alte lucruri. De analizat caz cu caz...

În general, în opinia mea, este mai bine și mai ușor să dezactivezi fișierele CSS separate și să le încorporezi în cele proprii pentru a minimiza problemele și a îmbunătăți performanța (mai puține fișiere de încărcat).

7 oct. 2010 14:09:30
Comentarii

Cum aș ști care dintre ele este?

IanEdington IanEdington
18 nov. 2015 02:30:46

Prin analizarea codului în principal. :)

Rarst Rarst
18 nov. 2015 10:36:52
1

O altă metodă destul de elegantă este utilizarea specificității CSS.

Deci, dacă CSS-ul plugin-ului spune:

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

tu poți defini în CSS-ul tău:

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

Vezi și răspunsul lui Michael Rader pentru o întrebare similară.

5 ian. 2012 18:36:50
Comentarii

Ok, mulțumesc foarte mult. Acesta ar fi răspunsul acceptat pentru mine. Doar folosește fișierul general style.css și specificitatea funcționează perfect!

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

Salvez o copie a CSS-ului plugin-ului "not willing" în folderul temei și îl import în CSS-ul temei prin adăugarea

@import url('name-of-the-plugin-css.css');

în el (înlocuind, desigur, numele fișierului .css cu cel pe care îl injectez). Apoi modific copia CSS în folderul temei și o salvez pe server, așa cum fac pentru celelalte fișiere. Ah, da, uneori poate fi necesar să "fixez" ID-urile sau clasele modificate atribuindu-le un "!important".

Nu știu dacă aceasta este cea mai modernă metodă, dar nu face rău și funcționează perfect.

27 iul. 2011 04:49:03
0

Am ajuns să folosesc !important pentru CSS-ul meu personalizat și asta a suprascris stilizarea pentru plugin-ul cu care aveam probleme. Dezvoltatorul plugin-ului folosea !important în întregul CSS al plugin-ului și de aceea nu puteam să-l suprascriu fără !important.

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

Pentru a suprascrie CSS-ul unui plugin care folosea deja specificitate și !important, am utilizat ID-uri pentru a suprascrie clasele. Acest lucru mi-a simplificat puțin codul. Desigur, nici această soluție nu este perfectă, deoarece funcționează doar dacă elementele au atât ID-uri cât și clase atribuite.

Teoretic, ai putea folosi și selectori de atribut. Cu toate acestea, încă nu am testat această teorie în practică.

28 aug. 2013 09:02:32
0
-1

Pentru a suprascrie CSS-ul unui plugin, care deja utiliza specificitate și !important, am folosit ID-ul pentru a suprascrie clasele. Acest lucru mi-a simplificat puțin codul. Desigur, nici aceasta nu este o soluție perfectă, deoarece funcționează doar dacă există ID-uri atribuite elementelor, pe lângă clase.

Teoretic, ai putea folosi și selectoarele de atribute. Totuși, încă nu am testat această teorie în practică.

3 nov. 2017 10:51:35