Cum să încarci scripturi/stiluri specifice pentru o pagină

25 aug. 2016, 20:27:55
Vizualizări: 22.7K
Voturi: 13

Știu că în procesul implicit de pornire WordPress, mai întâi este apelat functions.php, după care urmează toate elementele temei. Dar în prezent intenționez să refactorizez complet tema mea pentru a o optimiza. Ideea mea este să am un fișier CSS de bază pentru proprietățile comune, normalizare și culori. Sau să păstrez un singur fișier CSS, dar în acest caz trebuie să codific manual un switch case în functions.php pentru a determina pagina. Și un alt fișier specific pentru fiecare pagină, deoarece nu are sens să încarc un fișier CSS uriaș cu toate stilurile definite.

Deci întrebarea mea este care este cel mai bun loc pentru a face hook pentru încărcarea unui script/stil specific?

Ar trebui să fie în header-xxx.php sau alt fișier? Poate există o modalitate de a implementa această idee într-un mod mai scalabil și elegant?

Aș fi recunoscător pentru orice ajutor.

0
Toate răspunsurile la întrebare 2
3
13

Totul depinde de dimensiunea personalizărilor tale și de modul în care îți organizezi lucrurile. Dar există două metode principale de a face acest lucru. functions.php și template files

Modul în care prefer să fac acest lucru este să înregistrez toate scripturile/stylesheet-urile în functions.php, astfel încât să știu cu ce voi lucra, dar voi încărca doar ceea ce am nevoie atunci când am nevoie.

Ai putea încărca toate lucrurile tale condițional în fișierul functions.php ( if( is_page( 'blah') { //... încarcă lucruri } ) sau ai putea folosi template files pentru a stiliza categorii/tag-uri/postări/pagini specifice etc.

Apoi, în acel fișier template, apelezi fișierele tale de script/stylesheet încărcate acolo. Asta face și un mod ordonat de a înțelege ce este încărcat unde.

Dar cu siguranță, dacă dorești să împărți stylesheet-ul tău în fișiere mai mici, va trebui să folosești

Aceeași logică s-ar aplica și pentru scripturi cu funcțiile corespunzătoare de înregistrare/încărcare

De asemenea, ia în considerare numărul de cereri în strategia ta, dacă împărți lucrurile tale în mai multe fișiere, încearcă să menții numărul de fișiere încărcate scăzut, astfel încât să nu afectezi negativ timpul de încărcare al paginii în acest fel.

Există un alt lucru pe care îl poți face pentru a accelera încărcarea paginii. Dacă îi spui browserului să cache-uiască stylesheet-urile tale, atunci poate 1 (sau câteva) ar avea mai multe șanse să fie încărcate din cache decât dacă ai mai multe fișiere peste tot pe site-ul tău și acestea trebuie întotdeauna să fie preluate de pe server pentru că este o nouă cerere de fișier pe fiecare pagină nouă care este încărcată. Așa că ține cont și de asta.

Indiferent, cache-ul pentru 1 sau mai multe resurse este o abordare bună și va crește responsivitatea percepută a site-ului tău în ceea ce privește viteza site-ului.

Dacă ai nevoie de mai multe îndrumări despre cum să folosești aceste funcții, doar spune-ne.

EDIT

Principalele motive pentru înregistrarea scripturilor sunt următoarele

  • Face mai ușor să apelezi un script/stylesheet când avem nevoie de el
  • Face posibilă utilizarea unui script/stylesheet înregistrat ca o dependență pentru un fișier pe care trebuie să-l încărcăm.
  • Ne previne să scriem același cod mai mult decât avem nevoie, simplificând eficient codul nostru
  • Mai multe lucruri la care poate nu mă gândesc acum

NOTĂ

Un script/stylesheet care a fost înregistrat nu trebuie să fie încărcat dacă este listat ca un $deps al fișierului pe care îl încarci în prezent.

Un exemplu (nu neapărat cum ar trebui să faci, dar pentru a înțelege scopul)

Am înregistrat

  • common-style.css
  • navigation.css
  • buttons.css

Acum aceste stylesheet-uri sunt înregistrate, așa că dacă merg pe o pagină specifică și vreau să aplic o stilizare diferită acolo. Încarc pe acea pagină (fie prin instrucțiune condițională în functions.php sau în template-ul paginii) specific-style.css astfel.

add_action( 'wp_enqueue_scripts', 'my_specific_style' );
function my_specific_style(){
  wp_enqueue_style( 'specific-style', get_stylesheet_directory_uri() . '/path/to/specific-style.css', array( 'common-style', 'navigation', 'button') );
}

Reține că array-ul din wp_enqueue_style este un array de handle-uri ale stylesheet-urilor deja înregistrate. WP va încărca convenabil toate cele 4 fișiere în ordinea corectă pentru a respecta dependența.

Ai putea înlănțui dependența prin simpla înregistrare a fiecărui script/stylesheet cu dependența corectă

adică buttons.css depinde de navigation.css care depinde de common-style.css

Dacă înregistrez cu această logică în minte, trebuie doar să încarc specific-style.css cu buttons.css ca dependență și WP va înlănțui încărcarea pentru a respecta ordinea.

25 aug. 2016 21:28:20
Comentarii

Mulțumesc pentru răspunsul excelent, nu va afecta performanța dacă voi înregistra (wp-register-style/script) scripturile/stilurile pentru toate paginile mele în functions.php? Care sunt beneficiile înregistrării tuturor stilurilor și încărcării lor doar atunci când sunt necesare?

CROSP CROSP
25 aug. 2016 21:44:28

În mod normal nu, nu vei întâmpina probleme de performanță, este chiar recomandat să faci astfel. Voi actualiza răspunsul meu cu principalele avantaje

bynicolas bynicolas
25 aug. 2016 22:00:23

răspuns actualizat!

bynicolas bynicolas
25 aug. 2016 22:20:09
4

"refactorizare", "optimizare", "scalabilitate", "eleganță". Preocupări excelente! Ești pe drumul cel bun. Cu toate acestea, împărțirea unui fișier CSS în mai multe nu este soluția pentru aceste preocupări. Iată de ce:

Browser-urile cache-ază fișierele CSS. Așadar, odată ce prima pagină se încarcă, browser-ul nu va mai cere același fișier CSS pentru pagina următoare. Da, prima încărcare a paginii va fi ușor, imperceptibil mai lentă. Dar restul paginilor vor beneficia de acest lucru.

Mai puține cereri este una dintre cele mai importante modalități de a optimiza viteza unui site. (vezi Steve Souders sau acest articol).

O optimizare suplimentară este să minifici CSS-ul tău. (vezi postul Google PageSpeed.) Mulțumiri lui @bynicolas pentru sugestie.

Sigur, poți spune, dar cum rămâne cu eleganța? Iată vestea bună: Sass și LESS. Acestea îți permit să scrii mai puțin cod, să îl împarți în mai multe fișiere care sunt compilate într-un singur fișier CSS și multe altele.

25 aug. 2016 22:11:19
Comentarii

PS: Am avut de fapt aceeași idee acum câțiva ani: de ce să nu împărțim un fișier CSS mare în fișiere CSS mai mici, specifice fiecărei pagini? Părea o optimizare evidentă până când unul dintre colegii mei mi-a explicat de ce de fapt va face site-ul mai lent.

zendka zendka
25 aug. 2016 22:20:12

Răspuns excelent, am vorbit puțin despre asta în răspunsul meu, dar tu ai explicat-o bine. Poate nu este intuitiv la început, dar faptul că totul este cache-uit va face de fapt lucrurile mai rapide. Aș adăuga că minimizarea unui singur fișier CSS mai mare ar fi și mai benefică decât încărcarea mai multor fișiere mici.

bynicolas bynicolas
25 aug. 2016 22:23:39

punct bun legat de minimizare!

zendka zendka
25 aug. 2016 22:25:19

Mulțumesc, poate am descris ideea mea un pic neclar, dar intenționez să am maximum două fișiere CSS: primul este common.css și al doilea este specific pentru fiecare pagină.

CROSP CROSP
26 aug. 2016 06:26:49