Sfat rapid În mod condiționat, inclusiv JS și CSS Cu get_current_screen

Așa cum mulți mi-au spus înainte: "Un cetățean bun WordPress încarcă doar fișierele în care sunt necesare". Acest principiu se aplică atât la front-end, cât și la back-end (admin). Nu există nicio justificare pentru încărcarea fișierelor CSS și JS pe fiecare pagină de administrare atunci când aveți nevoie doar de acestea pe o singură pagină pe care ați creat-o. Din fericire a face lucrurile în modul corect este doar o singură funcție.

"Nu includeți niciodată fișiere CSS sau JS pe toate paginile de administrare. Va provoca conflicte cu alte pluginuri".


Există o funcție WordPress pentru tot

Deoarece aproape toate paginile de administrare au o adresă URL unică, nu este dificil să se detecteze când o anumită pagină este încărcată și apoi (și numai apoi) să includă fișierele JS și CSS de care avem nevoie. Putem folosi $ _SERVER [ 'REQUEST_URI'], sau în multe cazuri $ _GET [ 'actiune'] variabil. Cu toate acestea, există o modalitate mult mai ușoară, mai curată și mai standardizată de a face acest lucru. Salută salutări get_current_screen funcţie.

Lucruri de știut despre get_current_screen funcţie:

  • A fost introdus în WordPress v3.1, deci dacă încercați să îl utilizați în versiuni mai vechi, veți primi o eroare de "apelați la funcția nedefinită". Utilizarea function_exists pentru a verifica dacă este o idee bună dacă doriți să oferiți o alternativă.
  • Nu este disponibil în admin_init sau init cârlige pentru că se inițiază după ce sunt apelate aceste cârlige.
  • Funcția returnează a WP_Screen obiecte cu o mulțime de informații, dar veți fi, în principal, interesat de id obiecte de proprietate.
  • Nu este disponibil pe front-end (deoarece nu are nici un scop acolo).

Câteva linii de cod fac toate diferențele

Să presupunem că plugin-ul dvs. are o pagină de opțiuni în meniul Setări pe care l-ați creat cu:

add_options_page ('Pluginul meu', 'Pluginul meu', 'manage_options', 'my_plugin', 'my_plugin_options');

Aveți nevoie de câteva CSS și JavaScript suplimentare pe acea pagină, astfel încât să adăugați și acest cod:

 // Codul de mai jos! Nu copiați / lipiți! add_action ('admin_enqueue_scripts', 'my_plugin_scripts'); funcția my_plugin_scripts () wp_enqueue_style ('farbtastic'); wp_enqueue_script ( 'farbtastic'); 

Asta e rău! Nu face asta! Fragmentul de mai sus va include CSS și JS pentru selectorul de culori Farbtastic pe fiecare pagină de administrare. Dacă alte pluginuri doresc să scape de conținuturile dvs. pe paginile pe care le utilizează wp_dequeue_ * funcționează pentru a le elimina. Asta e cu adevărat inutil și nepoliticos pentru noi, pentru că putem scrie un cod mai bun!


 add_action ('admin_enqueue_scripts', 'my_plugin_scripts'); funcția my_plugin_scripts () // Includeți JS / CSS numai dacă suntem pe pagina opțiunilor noastre dacă (is_my_plugin_screen ()) wp_enqueue_style ('farbtastic'); wp_enqueue_script ( 'farbtastic');  // Verificați dacă ne aflăm pe pagina noastră de opțiuni funcția is_my_plugin_screen () $ screen = get_current_screen (); dacă (is_object ($ screen) && $ screen-> id == 'set_page_my_plugin') return true;  altfel return false; 

Este foarte ușor

Dacă aveți o privire la codul îmbunătățit puteți vedea că am adăugat doar unul dacă declarație și o funcție simplă - is_my_plugin_screen care verifică dacă suntem pe pagina de opțiuni a pluginului nostru. Variabila ecran $ deține WP_Screen obiect care are multe proprietăți, dar suntem interesați doar de id unu. Acea id constă dintr-un prefix "settings_page_", care este aceeași pentru toate paginile de setări și un șir"my_plugin"care este unic pentru plugin-ul nostru deoarece l-am definit ca al patrulea parametru în add_options_page funcția de apel.

Codul este foarte simplu și ușor de adaptabil la orice ecran de administrare. Pentru a vedea ce id este de pe ecranul curent, pur și simplu dump conținutul ecran $ cu:

echo "
". print_r (get_current_screen (), true). '
„;

Lucruri de luat acasă:

  • Nu includeți niciodată fișiere CSS sau JS pe toate paginile admin; aceasta va provoca conflicte cu alte pluginuri.
  • Utilizare get_current_screen după init pentru a afla când ecranul de administrare este vizibil și numai apoi include fișiere suplimentare.
  • Puteți găsi o listă a ID-urilor principale ale ecranului de administrare în Codul de sub Admin Screen Reference.
  • Nu faceți niciodată ecou > sau