Een paar artikelen geleden gaf ik een inleiding op Ajax in het WordPress-dashboard, maar de opmerkingen leidden tot een discussie voor precies hoe dit te doen op de WordPress-frontend (en hoe dit op de juiste manier te doen).
Ik raad ten zeerste aan om de vorige serie te herzien om een idee te krijgen waar we naartoe gaan, maar in dit artikel geven we een heel kort overzicht van wat Ajax is, hoe het werkt, hoe je het op de voorgrond kunt instellen en inzicht in de haken die WordPress biedt.
In het volgende artikel bouwen we eigenlijk een klein project dat de theorie in praktijk brengt. We lopen de broncode door en we zorgen er ook voor dat deze beschikbaar is op GitHub.
In de tussentijd gaan we aan de slag met het beoordelen van Ajax en de faciliteiten die WordPress ons biedt.
Op dit moment is Ajax niet nieuw. In feite is het moeilijk om een moderne website en / of webtoepassing te vinden die deze nog niet bevat, dus ik ga deze kort en krachtig houden.
Over het algemeen is Ajax wat ons in staat stelt om gedeeltelijke pagina-updates uit te voeren.
Dit betekent dat we een onderdeel (of delen) van een pagina kunnen bijwerken zonder dat een gebruiker de hele pagina hoeft te vernieuwen. De levenscyclus gaat meestal ongeveer als volgt:
Relatief eenvoudig te begrijpen, toch?
Om dit proces in WordPress te begrijpen, moeten we een paar ideeën bekijken die concreter zijn dan 'de gebruiker doet iets' en 'werkt de pagina dienovereenkomstig bij'.
Met dat gezegd, zijn de meesten van ons bekend met de acties, filters en het algemene haaksysteem van WordPress, ahum, aansluiten bij de levenscyclus van de WordPress-pagina om onze eigen functionaliteit te introduceren of om gegevens te verwerken voordat deze wordt weergegeven. Als dit niet het geval is, raadpleegt u de WordPress-hooks - zowel acties als filters - omdat deze reeks ervan uitgaat dat u vertrouwd bent met zowel.
Introductie van Ajax in WordPress verloopt in drie stappen. Het is letterlijk een recept dat elke keer dat je een asynchrone actie wilt introduceren, kan worden gevolgd.
Voordat ik naar dit recept ga kijken, wil ik eerst een aantal termen definiëren voor de beginners en voor degenen onder u die net bekend zijn met Ajax:
Met dat gezegd, hier is het recept dat wordt gebruikt om een Ajax-verzoek te formuleren in de context van WordPress (zowel in het dashboard als in thema's of op de frontend):
Voor degenen onder u die mijn vorige serie over Ajax in het Dashboard hebben gelezen of die bekend zijn met Ajax in WordPress, bent u waarschijnlijk al bekend met de bestanden en hooks die nodig zijn voor de implementatie van Ajax.
Concreet:
ajaxurl
is de URL die wordt aangeboden door WordPress waarnaar we ons verzoek sturen.wp_ajax_my_action
is de haak die we gebruiken om onze event-handler aan te sluiten.Voor een volledige opfriscursus, moet je het project uitchecken op GitHub.
Het implementeren van Ajax op de publieke kant lijkt erg op elkaar, maar het vereist twee dingen:
In het volgende bericht besteden we aandacht aan het importeren van de Ajax-bibliotheek van WordPress en hoe je hiervan kunt profiteren, maar het belangrijkste om te begrijpen in de rest van de post zijn de twee haken die nodig zijn voor het instellen van onze Ajax-bibliotheek. event handlers.
wp_ajax_my_action
HaakDe wp_ajax_my_action
haak is dezelfde die we gebruiken wanneer we met Ajax werken in het Dashboard. Hiermee kunnen we Ajax-ingeschakelde acties bieden aan gebruikers die zijn ingelogd op WordPress.
Dit betekent dat je zou gebruiken deze hook als u Ajax-functionaliteit wilt introduceren voor gebruikers die beheerders, bewerkers, contribuanten of leden van een site zijn.
Bedenk dat je het niet declareert wp_ajax_my_action
precies zoals het is. In plaats daarvan, het achtervoegsel 'my_action
'moet worden vervangen door uw methode naam. Dus als je een functie hebt met de handtekening:
function my_custom_handler () // stop my_custom_handler
Dan zou de bijbehorende haak er eigenlijk zo uitzien:
function my_custom_handler () // end my_custom_handler add_action ('wp_ajax_my_custom_handler', 'my_custom_handler');
Het is natuurlijk niet altijd ideaal om de functionaliteit te beperken tot gebruikers die op de website zijn ingelogd.
wp_ajax_nopriv_my_action
HaakDe wp_ajax_nopriv_my_action
is heel vergelijkbaar met de wp_ajax_my_action
haak behalve één ding:
Je zou gebruiken deze hook als je Ajax-functionaliteit aan gebruikers wilt introduceren zonder dat ze zich op de site hoeven aan te melden.
Het functioneert op exact dezelfde manier en is onderhevig aan exact dezelfde regels, behalve zijn "doelgroep", om zo te zeggen. Dit betekent dat je je functies als volgt kunt definiëren:
function my_custom_handler () // end theme_custom_handler add_action ('wp_ajax_nopriv_my_custom_handler', 'my_custom_handler');
Eenvoudig, toch?
Maar er is een beveiligingsprobleem hier: omdat u bepaalde functies opent voor gebruikers die niet zijn aangemeld, zullen belangrijke beveiligingsfuncties zoals nonce-waarden niet noodzakelijkerwijs werken, dus u moet heel selectief zijn over wat u doet ' gaan mensen toestaan om te doen als ze niet zijn ingelogd op de site.
Als algemene vuistregel, ik zeg altijd dat gebruikers die niet zijn ingelogd op de site geen toegang mogen hebben tot het wijzigen - dat wil zeggen, wijzigen, bijwerken, verwijderen of toevoegen - van gegevens aan de site. Natuurlijk, het is een beetje restrictief, maar dit is een kwestie van de gegevens op uw blog, site of applicatie.
Waarom zou je dat opofferen?
In het volgende bericht gaan we een werkvoorbeeld bekijken waarmee gebruikers die op de website zijn ingelogd berichten kunnen markeren die ze hebben gelezen.
Zorg er ondertussen voor dat je de volgende artikelen inhaalt, want ze helpen je om het komende bericht te verbeteren: