Så mange sa for meg: "En god WordPress-borger laster bare sine filer der de trengs". Dette prinsippet gjelder både front-end og back-end (admin). Det er ingen grunn til å laste inn CSS og JS-filer på hver admin side når du bare trenger dem på en enkelt side du opprettet. Heldigvis gjør ting på den rette måten er bare en funksjonskall unna.
"Ikke ta med CSS eller JS filer på alle admin sider. Det vil føre til konflikter med andre plugins."
Siden nesten alle administrasjonssidene har en unik nettadresse, er det egentlig ikke vanskelig å oppdage når en bestemt side er lastet, og deretter (og bare da) inkluderer JS og CSS-filer vi trenger. Vi kan bruke $ _SERVER [ 'REQUEST_URI']
, eller i mange tilfeller $ _GET [ 'handling']
variabel. Men det er en mye enklere, renere og mer standardisert måte å gjøre det på. Hallo til get_current_screen
funksjon.
get_current_screen
funksjon:function_exists
funksjon for å sjekke om det er en god ide om du vil gi et alternativ.admin_init
eller i det
kroker fordi den blir initialisert etter at krokene er kalt.WP_Screen
objekt med mye info, men du vil hovedsakelig være interessert i id
objekt eiendom.La oss anta at pluginet ditt har en tilleggsside under Innstillinger-menyen som du opprettet med:
add_options_page ('My Plugin', 'My Plugin', 'manage_options', 'my_plugin', 'my_plugin_options');
Du trenger litt ekstra CSS og JavaScript på den siden, så du legger til denne koden også:
// Dårlig kode nedenfor! Ikke kopier / lim inn! add_action ('admin_enqueue_scripts', 'my_plugin_scripts'); fungere my_plugin_scripts () wp_enqueue_style ('farbtastic'); wp_enqueue_script ( 'farbtastic');
Det er ille! Ikke gjør det! Utsnittet ovenfor vil inkludere CSS og JS for Farbtastic fargeplukker på hver enkelt admin side. Hvis andre plugins ønsker å bli kvitt din inneholder på sidene de må bruke wp_dequeue_ *
Fungerer for å dequeue dem. Det er virkelig unødvendig og uhøflig av oss fordi vi kan skrive bedre kode!
add_action ('admin_enqueue_scripts', 'my_plugin_scripts'); funksjon my_plugin_scripts () // Inkluder JS / CSS bare hvis vi er på vår opsjonsside hvis (is_my_plugin_screen ()) wp_enqueue_style ('farbtastic'); wp_enqueue_script ( 'farbtastic'); // Sjekk om vi er på funksjonssiden vår funksjon is_my_plugin_screen () $ screen = get_current_screen (); hvis (er_objekt ($ skjerm) && $ skjerm-> id == 'settings_page_my_plugin') return true; ellers return false;
Hvis du ser på vår forbedrede kode, kan du se at vi bare har lagt til en hvis
uttalelse og en enkel funksjon - is_my_plugin_screen
som sjekker om vi er på alternativet for plugin-modulen vår. Variabelen $ skjermen
holder WP_Screen
objekt som har mange egenskaper, men vi er bare interessert i id
en. At id
består av et prefiks "settings_page_
", som er det samme for alle innstillingssider, og en streng"my_plugin
"som er unikt for plugin fordi vi definerte det som fjerde parameter i add_options_page
funksjonsanrop.
Koden er veldig enkel og lett å tilpasse til hvilken som helst admin skjerm. For å se hva ID-en er for den nåværende skjermen, bare dump innholdet av $ skjermen
med:
ekko ''. print_r (get_current_screen (), true). '';
get_current_screen
etter i det
for å finne ut når administrasjonsskjermen din er synlig, og bare da ta med flere filer.>