Czy kiedykolwiek jest w porządku włączenie wbudowanego CSS we wtyczkach?

21

Zwykle we wtyczce dodawałbym style za pomocą wp_enqueue_style. Jednak obecnie tworzę wtyczkę, która potrzebuje tylko kilku wierszy CSS i zastanawiam się, czy lepiej byłoby podać style wbudowane, aby zapisać żądanie. Oczywiście korzystanie z wp_enqueue_style ma wiele zalet, ale czy są one warte dodatkowych próśb o tak mały kawałek CSS? Czy istnieje jakakolwiek akceptowana „najlepsza praktyka” w tym obszarze?

Dustin
źródło

Odpowiedzi:

14

TL; DR; Enqueue

Korzystanie z zewnętrznego arkusza stylów

  • PRO: Wszystkie twoje style są w jednym miejscu.
  • PRO: Zmniejsza kodowanie stron internetowych.
  • PRO: Łatwiejsze utrzymanie wtyczki.
  • PRO: Można użyć haczyków, aby zmienić lokalizację pliku.
  • PRO: Można użyć haczyków, aby odznaczyć plik.
  • PRO: Może automatycznie używać stylów minify.
  • CON: Może dodać dodatkowe żądanie HTTP (można przezwyciężyć).

Korzystanie ze stylów wbudowanych

  • PRO: Widzi bezpośrednio zastosowany styl.
  • PRO: Brak dodatkowych żądań HTTP.
  • CON: Nie można używać haków do zmiany stylów.
  • CON: Nie można użyć haczyków, aby cofnąć kolejność stylów.
  • CON: W ogóle nie można zminimalizować stylów.
  • CON: Need ! Ważne, aby zastąpić styl

Normalnie powiedziałbym: Jasne, jeśli tylko ty go używasz, idź dalej i zrób to bezpośrednio. Ale mówisz o wtyczce, co oznacza, że ​​kod będzie publiczny, więc dąż do rozszerzenia. W tej chwili masz tylko kilka linii stylizacji:

  • CON: A co, jeśli tych kilku stanie się więcej?
  • CON: Co jeśli ktoś rozszerzy Twoją wtyczkę?
  • CON: Co jeśli ktoś chce to zmienić?
  • CON: Co jeśli ktoś szuka go w plikach css?
  • CON: Co jeśli ktoś chce to zminimalizować automatycznie?

Dlatego kolejkuj. (Najlepiej warunkowo tylko wtedy, gdy wtyczka tego potrzebuje). To samo dotyczy JavaScript . (Ale jeśli to możliwe, powinno to zostać uwzględnione w stopce).

Derk-Jan
źródło
Czy można używać stylów wbudowanych w wewnętrznej bazie danych?
shea
@ bungeshea Jeśli ktoś zamierza zmienić wtyczkę, może chcieć zmienić zbyt dobrze backend;) Upewnij się tylko, że skasujesz skrypt tylko w backend. Na przykład: function _your_enqueue( $hook )możesz przetestować $ hook, aby sprawdzić, czy jesteś na stronie opcji. Alternatywnie możesz użyć current_screen()dla prostszych właściwości. Chodzi o to, że możesz to zrobić, ale ogólnie rzecz biorąc, wtyczka składa się z pliku .php dla kodu na serwerze i może mieć lub nie obrazy, .js i .css.
Derk-
1
Zauważ, że dodatkowe żądanie HTTP można pokonać - czy możesz to wyjaśnić?
Dustin
2
Nie możesz, ale użytkownik wtyczki może. Istnieje kilka wtyczek i funkcji napisanych do, tuż przed wydrukowaniem strony, pobierz WSZYSTKIE kolejkowane style i dodaj je do zminimalizowanego, połączonego pliku. Bez względu na to, ile plików CSS dodasz, przeglądarka zobaczy tylko jeden. To samo dotyczy javascript. Nie jest to jednak twój „problem”. Jest to optymalizacja, która nie jest potrzebna i imho, dodatkowe żądanie HTTP trochę nie spełnia wszystkich PRO.
Derk-
1
O ostatnim zdaniu - style AFAIK powinny być wyprowadzane w nagłówku, a nie w stopce
Mark Kaplun
2

Trudno na to odpowiedzieć i naprawdę nie jestem pewien, czy istnieje oficjalna odpowiedź.

Rozumiem sentyment do zapisywania żądania, ale styl wbudowany prawie zawsze wygrywa. Motyw lub użytkownik końcowy będzie miał trudności z modyfikacją CSS.

Mając to na uwadze, myślę, że zrobiłbym to w publicznie wydanej wtyczce ...

  1. jeśli CSS ma absolutnie kluczowe znaczenie dla działania wtyczki, jak na przykład w przypadku pokazów slajdów.

  2. Lub, jeśli dołączyłem również filtr do wtyczki, który pozwala na zmianę lub usunięcie wbudowanego CSS.

s_ha_dum
źródło