Niedawno wydałem wtyczkę, WP Coda Slider , która używa skrótów, aby dodać suwak jQuery do dowolnego posta lub strony. Dodaję stronę opcji w następnej wersji i chciałbym uwzględnić niektóre opcje CSS, ale nie chcę, aby wtyczka dodawała opcje stylu jako wbudowany CSS. Chcę, aby wybory były dynamicznie dodawane do pliku CSS po jego wywołaniu.
Chciałbym również unikać używania fopen lub pisania do pliku ze względów bezpieczeństwa.
Czy jest coś takiego łatwego do osiągnięcia, czy lepiej byłoby po prostu dodać opcje stylu bezpośrednio na stronie?
plugin-development
css
options
Chris_O
źródło
źródło
wp_enqueue_style()
(iwp_enqueue_script()
) nazwy funkcji zamiast nazwy pliku i spowodowanie, że moja funkcja wygeneruje CSS (lub JS), ale mimo to ostatecznie umieści go w połączonym arkuszu stylów. O ile wiem, nie jest to możliwe w przypadkuwp_equeue_*()
funkcji. Może powinniśmy przesłać bilet trac?Odpowiedzi:
Użyj
wp_register_style
i,wp_enqueue_style
aby dodać arkusz stylów. NIE dodawaj po prostu linku do arkusza stylówwp_head
. Style kolejkowania pozwalają innym wtyczkom lub motywom modyfikować arkusz stylów, jeśli to konieczne.Twój arkusz stylów może być plikiem .php:
my-stylesheet.php wyglądałby tak:
źródło
Dynamiczne budowanie pliku CSS, a następnie ładowanie go, OGROMNIE obciąża wydajność, co powinno być bardzo niską przepustowością dodawania pliku CSS, zwłaszcza jeśli w CSS są zmienne, które będą przetwarzane przez WP. Ponieważ są tworzone dwa różne pliki dla jednego ładowania strony, WP uruchamia się dwukrotnie i uruchamia wszystkie zapytania DB dwa razy, i to jest wielki bałagan.
Jeśli suwak ma znajdować się tylko na jednej stronie, a chcesz, aby style były ustawione dynamicznie, najlepszym rozwiązaniem jest dodanie bloku stylu do nagłówka.
W kolejności wykonania:
źródło
Tak zazwyczaj to robię:
źródło
Miałem trudności ze wszystkimi zaleceniami tego rodzaju - może jestem trochę gruby, a może autorzy stracili wspólny charakter.
Postanowiłem zakodować to w pliku php wtyczki: -
Wydaje się, że działa. Ładuje się tylko na tych stronach, które korzystają z wtyczki. Ładuje się po tagu h1, który jest dla mnie w porządku. Nie widzę, jak mogłoby być bardziej wydajne lub bardziej jasne.
.... ale może się mylę - powiedziałem, że jestem trochę gruby.
źródło
<link>
Elementy należy ładować tylko w nagłówku stronyAktualizacja od Wordpress 3.3
Istnieje funkcja o nazwie wp_add_inline_style, której można używać do dynamicznego dodawania stylów na podstawie opcji motywu / wtyczki. Można tego użyć do dodania małego pliku css w głowie, który powinien być szybki i wydajny.
źródło