De ins en outs van het wachtrijenscript voor WordPress Thema's en plug-ins

De wp_enqueue_script functie is de beste oplossing voor het laden van JavaScript-bestanden in uw WordPress-site. Als u een thema ontwikkelt dat JavaScript- of JavaScript-bibliotheken gebruikt, is de wp_enqueue_script functie is de manier om te gaan. Als je dit nog niet echt eerder hebt gebruikt, kunnen dit verwarringen zijn ... dus vandaag zullen we een diepgaand onderzoek doen naar hoe je scripts correct in je thema of plug-in kunt laden met behulp van de wachtrijfunctie.

Latere wijzigingen in technieken & software

Bepaalde aspecten van toepassingen of technieken die in deze zelfstudie worden gebruikt, zijn gewijzigd sinds de publicatie oorspronkelijk werd gepubliceerd. Dit maakt het misschien een beetje moeilijk om mee te volgen. We raden u aan deze meer recente zelfstudies over hetzelfde onderwerp te bekijken:

  • JavaScript en CSS opnemen in uw WordPress-thema's en plug-ins

Waarom gebruiken we de wachtrijfunctie?

Als u een eenvoudige HTML-achtergrond hebt, bent u waarschijnlijk gewend om JavaScript-bestanden (inclusief alles van jQuery- naar plug-inscripts) rechtstreeks in de kop- of voettekst van uw document te laden. Dat is prima als u zich in een zelfstandige omgeving bevindt, zoals een eenvoudige HTML-pagina ... maar zodra u de talloze andere scripts introduceert die mogelijk op een WordPress-installatie worden uitgevoerd, wordt het lastiger om te doen wat ik "crowd management" zal noemen met uw scripts.

Dus waarom zou u uw JavaScript niet in de koptekst of de voettekst laden? Het antwoord is vrij simpel: door je JavaScript op die manier op te nemen, loop je het risico van conflicten met je JavaScript in je installatie (denk aan, meerdere plug-ins proberen dezelfde scripts te laden of verschillende versies van dat script). Verder wordt uw JavaScript geladen elk pagina, zelfs als u dit niet nodig heeft. Dit zorgt voor een onnodig langere laadtijd voor uw pagina's en kan interfereren met ander JavaScript, zoals vanuit een plug-in of in het dashboard ... en dat is een Nee in WP-ontwikkeling.

Door de wp_enqueue_script functie. U hebt meer controle over hoe en wanneer u uw JavaScript laadt. U kunt zelfs beslissen of u de kop- of voettekst wilt laden.


Inzicht in de wp_enqueue_script Functie

De wp_enqueue_script functie is wat scripts in je WordPress-site laadt. Je gaat het meestal gebruiken in je functions.php het dossier.

De wp_enqueue_script De functie zelf is redelijk rechttoe rechtaan, dus laten we eens kijken naar de structuur ervan.

wp_enqueue_script ($ handle, $ src, $ deps, $ ver, $ in_footer);

  • $ handle
    • Dit is de handle (de naam) van het script dat moet worden geladen. Het zou in alle kleine letters moeten zijn.
    • Dit is vereist
    • Standaard: Geen
  • $ scr
    • Dit is de URL van het script.
    • Als u lokaal vanaf uw server laadt, moet u de URL voor scripts op uw server niet coderen. Het is beter om te gebruiken content_url, bloginfo ( "template_url"), of get_template_directory_uri () (aanbevolen door de WordPress-functie) voor thema's, en plugins_url voor plug-ins.
          
    • Als u uw script van een andere server laadt. Bijvoorbeeld het laden van de jQuery-bibliotheek van het Google CDN. U plaatst gewoon de URL van het bestand dat moet worden geladen.
       
    • Dit is optioneel
    • Standaard: false
  • $ deps
    • Dit is een array die alle scriptafhankelijkheden afhandelt. Uw script fade.js vereist bijvoorbeeld dat jQuery wordt uitgevoerd. Deze parameter koppelt uw script aan de jQuery-bibliotheek.
    • U gebruikt "false" als u deze parameter niet wilt gebruiken, maar andere parameters wilt gebruiken.
       
    • Het vereiste script moet eerst worden geladen.
    • U gebruikt de handle van het vereiste script voor de array.
       
    • Dit is optioneel
    • Standaard: array ()
  • $ ver
    • Dit is de versie van uw script.
    • De versie is aan het einde van het pad als een queryreeks samengevoegd. De versie kan het versienummer, false of NULL zijn.
    • Als u false gebruikt voor de versie. De WordPress-versie wordt gebruikt.
    • Als u NULL gebruikt. Er zal niets als een versie worden gebruikt. Dit wordt niet aanbevolen door de WordPress-functie.
    • Als u de parameter $ ver niet gebruikt. De WordPress-versie wordt standaard gebruikt.
       
    • Dit is optioneel
    • Standaard: false
  • $ in_footer
    • Dit zal bepalen waar uw script zich op de pagina bevindt.
    • Deze parameter is een boolean ("true" of "false")
    • Standaard wordt uw script in de , maar het is beter om het vlak voor het einde van de label. Dit wordt bereikt door "true" door te geven aan de parameter.
       
    • Dit is optioneel
    • Standaard: false

Zoals u kunt zien, alle parameters behalve $ handle zijn optioneel. Op het eerste gezicht lijkt dit misschien vreemd. Vooral de $ scr parameter. Hoe kan WordPress het script vinden zonder een URL?

De reden hierachter is dat WordPress wordt geleverd met ingebouwde scripts. JQuery maakt bijvoorbeeld deel uit van de WordPress-kern en het WordPress ontwikkelteam maakte het supereenvoudig om deze ingebouwde scripts te laden. Het enige wat je hoeft te doen is de handle van het script doorgeven wp_enqueue_script.

 

Voor de volledige lijst met ingebouwde WordPress-scripts en hun handles. Bekijk de WordPress-functiehandleiding.


Gebruik van Enqueue Script met uw WordPress-thema

Nu begrijp je de delen van wp_enqueue_script. Laten we eens kijken hoe u dit feitelijk gebruikt met uw WordPress-thema.

Eerste dingen eerst

Er zijn andere WordPress-functies die u moet kennen voordat u scripts op de juiste manier kunt invennen.

  • wp_register_script
    • De wp_register_script functie wordt gebruikt om uw script te registreren bij WordPress. Wat dit betekent, kunt u gebruiken wp_enqueue_script voor uw scripts, net als de ingebouwde scripts die bij WordPress horen
    • De parameterstructuur voor wp_register_script is precies hetzelfde als de wp_enqueue_script structuur, dus ik ga er niet nog een keer overheen. U kunt indien nodig verwijzen naar het bovenstaande gedeelte.
    • Gewoon instellen wp_register_script precies zoals je zou doen wp_enqueue_script. Creëer dan het script met wp_enqueue_script door het handvat er doorheen te leiden.
       
  • wp_deregister_script
    • De wp_deregister_script verwijdert een geregistreerd script.
    • Het enige dat u hoeft te doen, is het handvat er aan te geven.
       
  • wp_deregister_script
    • De wp_dequeue_script verwijdert een geregistreerd script.
    • Het enige dat u hoeft te doen, is het handvat er aan te geven.
       

Uw scripts laden

De gemakkelijkste manier om je script te laden is door de wp_enqueue_script waar je maar wilt op je pagina.

  

Makkelijk genoeg, alleen niet om elegant te zijn. Een betere manier is om uw function.php-bestand te gebruiken om uw scripts te laden. Om dit te doen, moet je een aangepaste functie maken. Gebruik dan add_action om uw functie te initialiseren.

 
  • Lijn 2 creëert een functie genaamd load_my_scripts
  • Regel 3 registreert het script myscript
  • Regel 4 zorgt voor het rijgen van het script myscript
  • Lijn 6 initialiseert de functie load_my_scripts

Het script dat we zojuist hebben geladen, heeft de huidige jQuery-versie nodig om te worden uitgevoerd, dus laten we de standaardversie van WordPress afmelden, de nieuwe versie aan onze functie toevoegen.

 
  • Regel 2 deregisters de standaard jQuery die wordt geleverd met WordPress
  • Regel 3 registreert een andere versie van jQuery
  • Regel 4 zorgt voor het rijgen van het script myscript

OK, goede praktijken voor het coderen van WordPress dicteren dat we moeten controleren of er een functie bestaat voordat we deze uitvoeren. Dit is zo bereikt.

 

Hiermee wordt gecontroleerd of uw functie al bestaat. Als dit niet het geval is, wordt uw functie uitgevoerd.

Laten we dit toevoegen aan onze load_my_scripts functie

 

Als u nu naar uw beheerderspagina gaat, wilt u niet dat uw script wordt geladen. Dit kan een conflict veroorzaken en de beheerderspagina verbreken. Een algemene vuistregel is dat u niet wilt dat uw aangepaste scripts op de beheerderspagina worden geladen. Scripts voor plug-ins is een ander verhaal. Ik zal dat later bespreken.

We gaan controleren of de geladen pagina is niet de beheerderspagina met! is_admin (). Als dit niet het geval is, worden onze scripts geladen.

 

Nu ziet de functie er zo uit.

 

Daar ga je. Een mooie sjabloon die u kunt gebruiken om scripts in te huren


Gebruik van Enqueue Script voor uw plug-ins

Oké, nu je dat onder de knie hebt. Laten we een script toevoegen dat alleen op de beheerderspagina van uw plug-in wordt geladen.

Het is eigenlijk heel simpel. Schrijf gewoon je scriptfunctie op dezelfde manier als in het vorige gedeelte in het bestand van je plug-in. Gebruik nu 'admin_init' in plaats van 'init' in het add_action te gebruiken.

 

Dat is alles, nu wordt uw script alleen geladen als u naar de beheerderspagina van plugin gaat.


Conclusie

Ik hoop dat dit je zal helpen om het beter te begrijpen Scripts inleveren in WordPress, dus nu kun je daar naar toe gaan en enkele eigen scripts laden!

Als er iets is dat u niet begrijpt of dat u wilt lezen. Ik raad aan de WordPress Codex te bezoeken. Hier is een lijst met enkele andere relevante codex-koppelingen voor jou ook:

  • Functieverwijzing / wp-wachtrij-script
  • Functiereferentie / wp registerscript
  • Functie Referentie / wp deregistratie script
  • Function Reference / wp dequeue script