Zoals velen voor mij zeiden: "Een goede WordPress-burger laadt zijn bestanden alleen op de plaats waar ze nodig zijn". Dit principe is van toepassing op zowel het front-end als het back-end (admin). Het is niet gerechtvaardigd om CSS- en JS-bestanden op elke beheerderspagina te laden wanneer u ze alleen op één pagina nodig hebt die u hebt gemaakt. Gelukkig is het op de juiste manier doen van dingen slechts één functie om te bellen.
"Neem nooit CSS- of JS-bestanden op alle beheerderspagina's op, dit veroorzaakt conflicten met andere plug-ins."
Omdat bijna alle admin-pagina's een unieke URL hebben, is het echt niet moeilijk om te detecteren wanneer een bepaalde pagina is geladen en bevatten we (en alleen dan) JS- en CSS-bestanden die we nodig hebben. We kunnen gebruiken $ _SERVER [ 'REQUEST_URI']
, of in veel gevallen, de $ _GET [ 'action']
variabel. Er is echter een veel eenvoudigere, schonere en meer gestandaardiseerde manier om dat te doen. Zeg hallo tegen de get_current_screen
functie.
get_current_screen
functie:function_exists
functie om te controleren of het een goed idee is om een alternatief te bieden.admin_init
of in het
haakt omdat het wordt geïnitialiseerd nadat die haken worden genoemd.WP_Screen
object met veel info, maar je zult vooral geïnteresseerd zijn in de ID kaart
objecteigenschap.Laten we aannemen dat uw plug-in een pagina met opties heeft onder het menu Instellingen die u hebt gemaakt met:
add_options_page ('My Plugin', 'My Plugin', 'manage_options', 'my_plugin', 'my_plugin_options');
Je hebt wat extra CSS en JavaScript nodig op die pagina, dus je voegt ook deze code toe:
// Slechte code hieronder! Kopieer / plak niet! add_action ('admin_enqueue_scripts', 'my_plugin_scripts'); function my_plugin_scripts () wp_enqueue_style ('farbtastic'); wp_enqueue_script (farbtastic);
Dat is slecht! Doe dat niet! Het bovenstaande fragment bevat CSS en JS voor de Farbtastic-kleurkiezer op elke afzonderlijke beheerderspagina. Als andere plug-ins uw inhoud van hun pagina's willen verwijderen, moeten ze deze gebruiken wp_dequeue_ *
functies om ze te verwijderen. Dat is echt onnodig en onbeleefd omdat we betere code kunnen schrijven!
add_action ('admin_enqueue_scripts', 'my_plugin_scripts'); function my_plugin_scripts () // Voeg JS / CSS alleen toe als we op onze optiespagina zijn als (is_my_plugin_screen ()) wp_enqueue_style ('farbtastic'); wp_enqueue_script (farbtastic); // Controleer of we op onze functie voor opties pagina is_my_plugin_screen () $ screen = get_current_screen (); if (is_object ($ scherm) && $ scherm-> id == 'settings_page_my_plugin') return true; else return false;
Als u onze verbeterde code bekijkt, kunt u zien dat we er slechts één hebben toegevoegd als
verklaring en een eenvoudige functie - is_my_plugin_screen
die controleert of we op de pagina met opties van onze plug-in staan. De variabele $ screen
houdt de WP_Screen
object met veel eigenschappen, maar we zijn alleen geïnteresseerd in de ID kaart
een. Dat ID kaart
bestaat uit een voorvoegsel "settings_page_
", wat hetzelfde is voor alle instellingenpagina's, en een string"my_plugin
"wat uniek is voor onze plug-in omdat we het definieerden als de 4e parameter in de add_options_page
functieaanroep.
De code is heel eenvoudig en gemakkelijk aan te passen aan elk beheerdersscherm. Om te zien wat de ID van het huidige scherm is, dumpt u simpelweg de inhoud van $ screen
met:
echo ''. print_r (get_current_screen (), true). '';
get_current_screen
na in het
om erachter te komen wanneer uw beheerdersscherm zichtbaar is en pas dan extra bestanden toe te voegen.>