WordPress REST API håller på att förändra WordPress. Du kanske inte har märkt det, eftersom mycket av det görs bakom kulisserna, men konsekvenserna av REST API gör en stor skillnad för WordPress framtid, både när det gäller dess kodbas och dess användningsområden.

Om du inte har arbetat med WordPress REST API, kanske du undrar precis vad det är för något. Så låt oss sätta igång med att titta på vad REST API är.

Vad är WordPress REST API?

WordPress REST API är ett gränssnitt som utvecklare kan använda för att komma åt WordPress från utanför själva WordPress-installationen. Du kommer åt det med JavaScript, vilket innebär att det kan användas för att skapa interaktiva webbplatser och appar.

REST står för Representational State Transfer och API står för Application Programming Interface, programmeringsgränssnitt. Låt oss ta en titt på vad var och en av dessa betyder.

Vad är ett Application Programming Interface (API)?

Ett Application Programming Interface eller API, definieras som:

”Ett gränssnitt eller kommunikationsprotokoll mellan en klient och en server som syftar till att förenkla byggandet av klient-programvara”.

Om du inte är bekant med API:er, kanske det inte hjälper så mycket. För att uttrycka det enklare är ett API en uppsättning kod som gör det möjligt för ett system att interagera med ett annat. Om du någonsin har lagt till en Google-karta till din WordPress-webbplats har du använt Googles Maps API, vilket gör att din WordPress-webbplats kan interagera med Google Maps.

Dessa system behöver inte vara helt separata. WordPress har redan flera API:er för saker som plugins, inställningar och kortkoder. Dessa kan användas av plugin och temautvecklare för att interagera med WordPress-kärnan och få saker att hända (som att skapa kortkoder och lägga till inställningsskärmar till WordPress admin).

Skillnaden mot REST API är att det tillåter system utanför din WordPress-installation att interagera med WordPress, vilket är där REST-delen kommer in.

Vad är Representational State Transfer (REST)?

Representational State Transfer, eller REST, ger standarder som webbsystem kan använda för att samverka med varandra. Utan REST, skulle två system inte kunna förstå varandra och så skicka data fram och tillbaka.

För att en applikation ska möta förutsättningarna för REST måste den överensstämma med fem principer:

  1. Enhetligt gränssnitt. De webbadresser som används för att få tillgång till resurser i systemet måste vara enhetliga, konsekventa och tillgängliga via ett gemensamt tillvägagångssätt som GET (mer om det inom kort).
  2. Klient-server. Klientapplikationer och serverprogram måste vara separata, så att de kan utvecklas oberoende av varandra. Om tekniken på serversidan (dvs WordPress) ändras, måste serverapplikationen (en app, till exempel) fortfarande kunna komma åt den via samma enkla metod.
  3. Tillståndslös. Servern ändrar inte tillståndet när en ny förfrågan görs med hjälp av API. Den lagrar inte de förfrågningar som har gjorts.
  4. Alla resurser måste vara cachebara för att förbättra hastighet och överensstämmelse med webstandarder. Cachning kan implementeras på servern eller klientsidan.
  5. Lageruppbyggt system. Ett REST-vänligt system låter dig använda flera lager för att komma åt det, och lagra data i mellanliggande servrar om det behövs. Servern kan inte avgöra om den slutliga klienten är direkt ansluten till den.

Alla dessa begränsningar relaterar till webbsidor och applikationer och styr hur ett program kan interagera med API:n.

Vad betyder detta för WordPress?

Att kombinera REST och API innebär att WordPress REST API är en uppsättning kod som är utformad för att göra det möjligt för andra system att samverka med WordPress och att det är byggt på ett sätt som säkerställer att dessa system kommer att förstå varandra.

Det innebär att en tredje parts webbplats eller en mobilapp till exempel kan komma åt din WordPress-databas, hämta data från den och lägga till data till den.

Det finns dock ett antal konsekvenser och användningsområden för detta.

Förstå WordPress REST API

WordPress REST API utvecklades som svar på förändringar i hur webbplatser och appar utvecklas och ett behov av att öppna upp WordPress.

Bakgrunden till WordPress REST API

WordPress REST API släpptes som en del av kärnan i version 4.7 i december 2016, men det fanns som ett plugin innan dess.

Det är utformat för att stödja en rad applikationer byggda på WordPress och att omvandla WordPress från ett innehållshanteringssystem till en applikationsplattform.

Det används i stor utsträckning av WordPress.com vars JavaScript-baserade gränssnittet använder REST API för att kommunicera med WordPress databas. Det används också av Gutenberg-redigeringsgränssnittet, som blev en del av kärnan under 2019.

REST API breddar utbudet av applikationer som WordPress kan användas för. Medan ett innehållshanteringssystem är perfekt för att driva en komplex webbplats, kan en applikationsplattform också användas för att driva webbaserade enkelsidiga applikationer eller SPAs (single-page applications). Om du någonsin har använt Google Dokument har du använt en sådan.

I dessa uppdateras innehållet när användaren vidtar åtgärder istället för att ladda nya sidor. Eftersom det använder JavaScript (ett språk på klientsidan) istället för PHP (ett språk på serversidan), kan det få saker att hända i användarens webbläsare utan att ständigt skicka förfrågningar till servern.

Konsekvenser för WordPress-användare och utvecklare

Om du är en användare och/eller utvecklare som arbetar med WordPress, har REST API ett antal konsekvenser.

För användare inkluderar dessa:

  • Ändringar i gränssnittet, inklusive Gutenberg-redigeraren.
  • Ändringar och förbättringar av WordPress mobilapp.
  • Adminskärmarna för självhostad WordPress ser mer ut com-skärmarna.

För utvecklare finns det bredare konsekvenser och möjligheter:

  • Möjligheten att skapa SPAs med REST API, hämta data från WordPress men ser väldigt annorlunda ut mot WordPress.
  • Möjligheten att integrera WordPress med annan frontend-teknik och system.
  • Möjligheten att utveckla med WordPress om du är en frontend-utvecklare som inte skriver PHP.
  • För PHP-utvecklare, ett ökande behov av att utöka dina färdigheter till att inkludera JavaScript.
  • Specifika förändringar såsom behovet av att bygga Gutenberg-block i stället för metarutor i sida- och post-redigeringsskärmarna.

Med tiden kommer WordPress REST API att innebära att mer av WordPresskärnan kommer att skrivas i JavaScript och inte PHP. Om du är en WordPress-utvecklare betyder det att du måste lära dig JavaScript.

Så kommer du åt WordPress REST API

Hur kommer du åt WordPress REST API?

För att komma åt WP-REST API måste du komma åt din webbplats via kommandoraden. Med WordPress kallas detta WP-CLI. Du gör inte något av detta via dina administratörsskärmar eller genom att direkt komma åt koden på din webbplats.

Låt oss ta en titt på hur du kommer igång.

Tillgång till WP-REST via WP-CLI

WP-CLI är WordPress kommandoradsgränssnitt. Det låter dig komma åt och arbeta med WordPress via kommandoradsgränssnittet, Command Line Interface  (CLI) på din dator. WP-CLI är förinstallerat med alla hostingplaner på Kinsta.

För att komma åt CLI, öppna Terminalen på en Mac eller Linux, eller Kommandotolken i Windows.

Terminalen på Mac
Terminalen på Mac

För att komma åt en avlägsen webbplats måste du använda SSH till din server för att komma åt den via WP-CLI (Det går inte att ansluta via SSH? Lär dig hur man fixar SSH-felet ”Connection Refused”).

För att komma åt en lokal webbplats behöver du helt enkelt använda rätt katalogstruktur från kommandoraden. Det är en bra idé att experimentera med REST API på en lokal testplats innan du använder det på en live-webbplats.

Du måste specifikt komma åt REST API för din webbplats, så här:

http://yoursite.com/wp-json/wp/v2

Du kan sedan lägga till element efter detta för att komma åt vissa typer av data, vilket vi kommer att titta på mer detaljerat inom kort. Dessa element kallas ändpunkter.

Autentisering

När du har öppnat din webbplats kan du behöva gå igenom autentisering. Vissa ändpunkter är offentliga och kräver inte autentisering, medan andra gör det.

Du loggar inte in på din webbplatsadministratör här: REST API gör saker lite annorlunda.

För att kunna autentisera din webbplats via WP-CLI, måste du installera ett autentiseringsplugin. För utvecklingsinstallationer gör Basic Auth-pluginet jobbet och är enkelt att arbeta med.

Men för live-webbplatser bör du använda en mer robust form av autentisering som JWT-Auhentication-pluginet, som använder JSON Web Token och är säkrare.

Du kan sedan använda kommandoraden för att komma åt data och inkludera autentisering.

Exemplet nedan använder curl för att testa anslutningen till WordPress. Det kommer att mata ut en lista över inläggsutkast.

curl -X GET --user username:password -i http://yoursite.com/wp-json/wp/v2/posts?status=draft

Utkast till inlägg är inte offentlig information, så du behöver autentisering för att komma åt dem. Men om du letar efter data som är offentliga behöver du inte autentisering. Så för att hämta en lista över inlägg som har publicerats, kan du använda:

curl -X GET http://yoursite.com/wp-json/wp/v2/posts

Detta skulle hämta alla publicerade inlägg eftersom de är offentliga.

Översikt av WordPress REST API-kommandon

När du har öppnat din webbplats och vet hur du använder autentisering (och om du faktiskt behöver), måste du använda en av en rad kommandon för att interagera med din webbplats.

De kommandon du behöver använda är:

  • GET hämtar en resurs som ett inlägg eller andra data.
  • POST lägger till en resurs till servern, till exempel ett inlägg, en bilaga eller en annan resurs.
  • PUT kan användas för att redigera eller uppdatera en resurs som redan finns på servern.
  • DELETE tar bort en resurs från servern. Använd det med försiktighet!

Låt oss ta en titt på var och en av dessa.

GET

Kommandot GET är förmodligen det vanligaste: det hämtar data. Exemplet nedan (som du använder när du öppnat din webbplats) skulle hämta en lista över alla publicerade sidor på din webbplats:

GET http://yoursite.com/wp-json/wp/v2/posts/?per_page=1

Observera att jag inte har inkluderat den fullständiga sökvägen till din webbplats i raden ovan eftersom du redan har åtkomst till den med WP-CLI.

Efter att ha hämtat dessa data kan du använda dem för att bestämma ditt nästa steg. Du kan ta bort ett av dessa inlägg, redigera det eller uppdatera det. Du skulle helt enkelt kunna skicka inläggen till din webbapp.

Låt oss säga att du ville hämta det senaste inlägget. Du skulle använda detta:

GET /wp/v2/posts/?per_page=1

Det finns ett antal argument du kan använda när du arbetar med inlägg. Se WordPress REST API-handboken för mer information.

POST

Använd POST för att lägga till nya data eller resurser på din webbplats.

Så, till exempel, om du ville skapa ett inlägg, skulle du börja med att använda ett POST-kommando:

POST http://yoursite.com/wp-json/wp/v2/posts/

Använd POST för att lägga till nya data eller resurser på din webbplats.

Så, till exempel, om du ville skapa ett inlägg, skulle du börja med att använda ett POST-kommando:

POST http://yoursite.com/wp-json/wp/v2/posts/pages

Detta skulle skapa en tom sida på samma sätt som du skulle skapa ett tomt inlägg.

PUT

Med PUT-kommandot kan du redigera en befintlig resurs, inklusive inlägg.

Låt oss säga att du har ett antal inläggsutkast på din webbplats. Du vill kolla dem och uppdatera ett för att publicera det.

Du kan börja med att hämta en lista över alla inläggsutkast:

POST http://yoursite.com/wp-json/wp/v2/posts/?status="draft"

Systemet ger dig en lista över alla aktuella inläggsutkast. Du kan ändra status för ett av dem med dess ID:

PUT http://yoursite.com/wp-json/wp/v2/posts/567

Detta öppnar det inlägget och låter dig redigera det. Du kan sedan ändra dess status med hjälp av statusargumentet:

{
"status" = "publish"
}

Eller så kan du lägga till innehåll i inlägget och publicera det:

{
"status" = "publish"
"content" = "content here"
}

Servern returnerar en 200-OK-status som talar om att PUT-förfrågan har redigerat inlägget.

DELETE

Kommandot DELETE gör vad du kan förvänta dig: det tar bort en resurs. Som standard, om du använder det för att ta bort ett inlägg kommer det att lägga det i papperskorgen i stället för att permanent ta bort det.

Så om du ville flytta inlägget du just skapat till papperskorgen, skulle du använda detta:

DELETE http://yoursite.com/wp-json/wp/v2/posts/567

Men om du ville kringgå papperskorgen och ta bort den permanent, skulle du använda force-argumentet:

DELETE http://yoursite.com/wp-json/wp/v2/posts/567?force=true

Detta tar bort inlägget permanent utan möjlighet att ångra, så det bör användas med försiktighet.

När du inte ska använda WordPress REST API

WordPress REST API kommer inte alltid att vara rätt sätt att utveckla en webbplats eller app. Här är några överväganden du bör vara medveten om innan du använder det för utveckling:

Kompatibilitet

Om din app kommer att användas på enheter som inte kör JavaScript eller av användare som sannolikt kommer att ha det avstängt, kommer den inte att köras om du använder REST API.

En WordPress-webbplats kodad i PHP kommer att mata ut HTML, så den kommer inte att lida av detta problem. Enheter som inte använder JavaScript blir ovanligare men om du utvecklar specifikt för dem, kommer REST API inte att fungera.

På samma sätt, om dina användare sannolikt kommer att stänga av JavaScript, kommer det orsaka problem att jobba med REST API. Vissa användare stänger av JavaScript i sina webbläsare av tillgänglighetsskäl eller säkerhetsskäl.

Tillgänglighet

Webbplatser eller appar som utvecklats med JavaScript är inte alltid lika tillgängliga som de som matas ut i HTML.

Detta beror till stor del på hur JavaScript används för att leverera dynamiskt innehåll som kanske inte leker snällt med skärmläsare och kan orsaka problem för personer med nedsatt syn eller ljuskänslig epilepsi.

Att använda REST API för att komma åt din WordPress-webbplats och mata ut data på ett sätt som är utformat för att vara tillgänglig innebär att du kan övervinna dessa problem, men det är värt att kontrollera din webbplats för tillgänglighet medan du utvecklar den.

SEO

Enkelsidiga applikationer, som uppdateras ofta, kan ibland orsaka SEO-problem. Detta beror på att innehåll som inte levereras när sidan först matas ut kanske inte indexeras av sökmotorer.

Google och andra sökmotorer börjar förstå att många webbplatser nu är SPA-drivna och indexerar dem på lämpligt sätt. Men det är värt att göra en grundlig SEO-revision av vilken webbplats du än utvecklar med REST API.

Så inaktiverar du WordPress REST API

Om du inte vill att program ska kunna komma åt data från din webbplats med REST API kan du inaktivera det. Kom ihåg att offentliga data kan vara tillgängliga för vem som helst, inte bara du.

För att göra detta kan du installera pluginet Disable WP REST API. Detta inaktiverar REST API för alla som inte är inloggade på din webbplats.

Disable WP REST API-pluginet
Disable WP REST API-pluginet

Alternativt kan du lägga till lite kod till temats funktionsfil eller skriva ditt eget plugin. Det är bättre att skriva ett plugin eftersom detta inte är en tema-specifik funktionalitet.

I ditt plugin, lägg bara till två rader:

add_filter( 'json_enabled', '__return_false' );
add_filter( 'json_jsonp_enabled', '__return_false' );

Detta kommer att helt inaktivera REST API för din webbplats. Det kan påverka dina adminskärmar så se till att allt fungerar OK när du har lagt till det.

Verkliga applikationer som använder WordPress REST API

REST API presenterar några spännande möjligheter för framtiden för WordPress. Här är några exempel på applikationer och webbplatser som använder WordPress REST API för att skapa SPAs eller att länka WordPress till andra webbplatser och tekniker.

WordPress.com

WordPress.coms gränssnitt
WordPress.coms gränssnitt

WordPress.coms adminskärmar byggs helt med REST API för att skapa en SPA som användare interagerar med för att hantera sin webbplats.

Detta skapar dynamisk kommunikation mellan gränssnittet och servern och resulterar i ett användarvänligt gränssnitt som WordPress.org sannolikt kommer att efterlikna efterhand.

Blockredigeraren (Gutenberg)

Gutenberg-redigeraren
Gutenberg-redigeraren

I WordPress adminskärmar också, men den här gången i självhostad WordPress med, har Gutenberg-blockredigeraren användning av REST API för att kommunicera med din databas och skapa block.

För att inläggstyper ska fungera med Gutenberg-redigeraren måste de ha REST API aktiverat. Vilket innebär att om du registrerar en anpassad inläggstyp och använder Gutenberg måste du lägga till följande rad för att aktivera blockredigeraren för den inläggstypen:

"show_in_rest" = true;

Event Espresso

Event Espresso
Event Espresso

Event Espresso är ett WordPress-plugin som låter användare organisera och publicera händelser. Det använder sig av REST API så att användarna kan komma åt dess data från utanför WordPress. Det innebär att du kan bygga mobilappar eller SPAs för att hantera dina händelser.

UsTwo

UsTwo
UsTwo

UsTwo är en digital byrå vars webbplats byggdes med REST API som en Enkelsidig applikation. Detta kombinerar en frontend som är byggd med React med en backend som drivs av WordPress (föreslog läsning: Din guide för att starta och driva en framgångsrik WordPress-byrå).

Innehållet i deras enda sida är modulärt, med en struktur som skiljer sig från en vanlig WordPress-sida. För att få detta att fungera använder de ett anpassat sidbyggarplugin som låter deras team lägga till modulärt innehåll på webbplatsen.

USA Today

USA Today
USA Today

USA Todays webbplats byggdes med hjälp av WordPress REST API-integration med befintliga system och moduler på webbplatsen.

REST API låter webbplatsens innehåll att skickas till andra marknader som Facebook Instant Articles och Apple News, med hjälp av JSON. De skrev också ett online socialt spel för sin sportsektion, med JavaScript.

Sammanfattning

WordPress REST API presenterar några spännande utmaningar men också intressanta möjligheter för både WordPress-användare och utvecklare. Det är framtiden för WordPress och kommer sannolikt att radikalt förändra hur vi utvecklar med WordPress och hur vi använder det.

Vad tycker du om REST API? Har du använt det för några av dina projekt? Berätta för oss i kommentarfältet nedan!

Rachel McCollin

Rachel McCollin has been helping people build websites with WordPress since 2010. She's a huge fan of self-hosted WordPress and wants to help as many people as possible create an awesome website with it.