Hur man arbetar med WordPress Kommentar Metadata

I hela denna serie har vi tittat på ett antal metadataprogram som erbjuds av WordPress. Detta inkluderar Post Meta API och User Meta API. Idag kommer vi att runda ut serierna genom att titta på WordPress Comment Meta API.

Observera att detta är den sista metadata API WordPress erbjuder. Från WordPress 4.4 finns det nu ett Term Metadata API. För att kunna förstå det är det viktigt att förstå taxonomier, villkor och deras relationer inom ramen för WordPress. I en kommande serie kommer jag att täcka exakt det.

Men idag kommer vi att fokusera på att hantera metadata i samband med kommentarer. Om du inte har läst något annat i denna serie fram till denna punkt rekommenderar jag att du granskar vad vi hittills har täckt.

Om du är upptagen, låt oss börja.

WordPress Comment Meta API

Under hela serien har vi använt WordPress-definitionen av metadata som vår grund för att förstå hur denna information representeras i samband med vår miljö.

Vi har specifikt sagt:

Metadata hanteras med nyckel / värdepar. Nyckeln är namnet på metadataelementet. Värdet är den information som kommer att visas i metadata listan på varje enskild post som informationen är associerad med.

I överensstämmelse med resten av innehållet som vi har sett i hela denna serie, gäller den här definitionen med kommentarmetadata precis som det gjorde med postmetadata och användarmetadata.

Uppgiften är att när du har fått ett handtag på de olika metadata-API-erna som vi har täckt, borde det vara väldigt lite överraskning med hur annan metadatafunktionalitet fungerar. Det kan finnas några saker olika beroende på vilket API du använder, men kärnan i funktionaliteten kommer att vara densamma.

Och, som du kommer att se, fortsätter detta med kommandot metadata API.

Arbetar med API-metadata för kommentarer

Precis som med de andra API-erna som vi har granskat i hela serien, finns det fyra primära funktioner som vi ska utforska:

  • add_comment_meta
  • update_comment_meta
  • get_comment_meta
  • delete_comment_meta

Nu vet du förmodligen vad du kan förvänta när det gäller att säga skillnaderna mellan att lägga till metadata och uppdatera kommentarmetadata. Eller säg, jobba med att ta bort kommentars metadata. 

Det förändrar inte det faktum att det är värt att utforska var och en av dessa API-funktioner i detalj för att se till att vi har täckt allt det finns att veta när de arbetar med dem.

För resten av denna artikel antar jag följande:

  • Du kör en lokal utvecklingsmiljö med en webbserver, databasserver och PHP.
  • Du har en kopia av WordPress installerad.
  • Du har en kopia av tutsplus-metadata.php inrättas i ditt temas katalog, och det ingår i ditt tema functions.php fil.
  • Du har din IDE och databas förhandsgranskning lättillgänglig.

Som jag har använt under tidigare artiklar använder jag följande applikationer:

  • MAMP
  • Atom
  • Sequel Pro
  • tjugo sexton

Slutligen lagras alla metadata som vi arbetar med wp_commentmeta databas tabell, så alla skärmdumpar som du ser av databasen kommer att vara av samma tabell.

Till skillnad från några av de andra metadatabord som vi har sett, wp_commentmeta bordet startar tomt (förutsatt att du arbetar med en relativt ny version av WordPress).

Det här är bra eftersom det kommer att ge oss en ren skiffer av olika slag att använda vid granskning av de olika API-funktionerna. Observera att för alla exemplen nedan kommer vi att se till att allt detta händer på Hej världen! posta. Det här inlägget har ID för 1. Om du vill använda en annan sida, ersätt helt enkelt 1 med posten i fråga.

Med allt det på plats, låt oss börja titta på vad som är tillgängligt.

Lägga till kommentar Meta

För att komma igång med att lägga till metadata i våra kommentarer är det viktigt att ta en titt på wp_comments bord för att se vilka kommentarer som redan finns. Om du arbetar med en ny installation av WordPress ser du sannolikt en enda post:

Det här är standardkommentaren som skickas med WordPress, och det går bra för de exempel vi använder. 

Om å andra sidan arbetar du med en databas full av kommentarer, inget problem! Allt du behöver veta är vilken kommentar du arbetar med (via sitt ID) och se till att du överensstämmer med koden vi använder nedan.

Precis som med andra API-skivor som vi har granskat i den här serien, lägger vi till metadata till kommentarer kommer i två former: unikt och icke-unikt. Vi ska granska båda.

Lägga till unika metadata

De add_comment_meta funktionen accepterar tre parametrar och en valfri fjärde parameter. Om du passerar Sann som den fjärde parametern, kommer metadata endast att läggas till om den angivna metatangenten inte existerar.

Vettigt? Låt oss ta en titt. Först lägger vi upp en funktion som lägger till några metadata som är associerade med den första kommentaren (men gör det bara på posten som har ett ID på 1):

Observera att jag har passerat den sanna parametern. Så varje gång jag uppdaterar sidan kommer WordPress att se att jag vill att det här värdet ska vara unikt så att det inte kommer att lägga till mer information i databattabellen förknippad med den metatangenten.

Lägga till icke-unika metadata

Om å andra sidan jag vill associera flera värden med samma meta-nyckel, skulle jag ta bort den sanna parametern. Använd till exempel följande kod:

Och sedan uppdatera sidan, säg, tre gånger. Om allt går som förväntat kan du se tre nya poster, som alla innehåller ett slumptal som genereras av samtalet till rand() i meta-värdet argumentet.

Det är lätt att hålla rakt, eller hur? Om du vill ha ett enda värde som är associerat med en enda nyckel, skicka sedan Sann som valfritt fjärde argumentet; Annars, ange inte något.

Uppdatering av kommentar Meta

Om du vill uppdatera befintliga kommentarmetadata är det viktigt att känna till kommentar-id, metatangenten och metavärdet. Detta betyder att WordPress kommer att titta på den angivna metatangenten och associera den med det angivna metavärdet.

Om meta-värdet existerar kommer det att skrivas över. Om metavärdet inte finns kommer det att skapas. Lägg märke till i den sista meningen att det finns lite funktionalitet som du kan använda när du lägger till metadata: Om du vill ha en unik information som skrivs till metadatabordet, kan du använda update_comment_meta och det kommer att skriva det som ett unikt värde.

Detta kan leda till lite förvirrande kod (eftersom det läser som om det uppdaterar något som inte existerar), men det gör det också möjligt att genomdriva att endast en enskild post kommer att finnas för den givna metatangenten.

Vad händer när det finns en metatangent associerad med flera meta värden? I så fall måste du veta det värde du vill byta ut. I vissa fall kanske du vet exakt vad det här är. I andra fall kan du behöva hämta informationen för att hitta den (som vi kommer att täcka i nästa avsnitt).

Om vi ​​antar att vi vill uppdatera en av de poster vi skapat, till exempel ett av de slumpmässiga siffrorna vi såg i exemplet ovan, kan vi leta upp det med hjälp av databasens framkant:

Och ange det som föregående värde i följande kod:

Därefter kan vi uppdatera sidan, ta en titt i vår databas och se förändringen. Observera att det arbete vi just gjorde är relevant för en utvecklingsmiljö och det är inte sättet att hantera detta i produktion.

Istället kan du behöva köra en fråga eller hämta en uppsättning värden innan du uppdaterar dem. Detta leder oss till nästa ämne.

Hämtar kommentar Meta

När du hämtar kommentarmetadata måste du bestämma om du vill hämta ett enda värde eller alla värden som är associerade med den angivna metatangenten.

Kanske ett annat sätt att titta på detta är följande: Om flera metadata har lagts till med samma metatangent (som vi täckte i Lägga till unika metadata avsnitt ovan), då kommer du sannolikt att hämta hela samlingen av poster.

Om du däremot bara vill hämta en post eftersom du vet att den är unik eller för att den skapades med update_comment_meta funktion, då vill du att WordPress ska returnera det till dig i ett enda värde.

De get_comment_meta funktionen kräver tre argument och en valfri fjärde beroende på vad du vill hämta.

Hämtar en array

Låt oss säga att du letar efter att hämta en samling av alla värden som är kopplade till en enda metatangent. För att göra detta skulle du ringa till get_comment_meta och du skulle ange kommentar-id och metatangenten.

I koden ovan skriver vi ut det till webbläsaren, men du skulle kunna arbeta med den här informationen på något sätt som du vill ha när du har hämtat den. Det viktigaste att märka är dock att värdet returneras som en matris.

Hämtar ett enskilt värde

Om du vill hämta ett enda värde behöver du bara ange kommentar-id och metatangenten i get_comment_meta fungera. Om du råkar hantera en metatangent med flera värden, så är det första värdet som skapades det som kommer att returneras.

Låt oss till exempel säga att det finns tre poster i samband med en metatangent, och du vill bara hämta ett värde. Din kod kommer att se ut så här: 

Och det resulterande värdet kommer att se ut så här:

sträng (9) "967432645"

Alternativt, om du vet att data är unika, så kommer koden fortfarande att likna, liksom det återvände värdet.

Den enda skillnaden är att det första exemplet hämtades från en uppsättning flera poster, och det andra exemplet hämtades från en enda post. Observera också att om du har ett unikt värde, kommer det fortfarande att returneras till dig som en array, men ett enda index array. 

Det här är viktigt att notera, för om du planerar att göra någon typ av jämförelse, särskilt till ett värde av en annan typ, till exempel ett heltal, då måste du ta tag i värdet från matrisen, och du kommer sannolikt att vilja göra typ konvertering innan en jämförelse görs.

Radera kommentar Meta

Att radera metadata är en enkel operation: Den kräver kommentaren ID, en metatangent och ett valfritt metavärde.

Om du inte anger metavärdet tas alla poster som är associerade med metatangenten bort. Om du emellertid anger metavärdet, kommer bara den enskilda posten att tas bort.

Ta bort unika värden

I det här exemplet antar vi att vi vet att det finns en enda metadata för en given metatangent. Det betyder att metatangenten måste vara unik för varje användare, så det använder kanske något som ett unikt genererat ID, en tidsstämpel eller något liknande.

För att ta bort ett unikt värde, skickar vi helt enkelt kommentaren ID och metatangenten:

Innan du kör den här koden bör databasen se ut så här:

Efter att du har uppdaterat sidan, ta en titt på databasen och du bör se att posten har tagits bort och databasen ska se ut så här:

Vi pratar lite mer om försiktighetsåtgärder vid borttagning av data i nästa avsnitt.

Ta bort icke-unika värden

I andra situationer, låt oss säga att det finns flera värden associerade med en enda metatangent. Vi har sett detta många gånger i hela denna artikel. Om du vill radera alla poster som är associerade med en metatangent behöver du inte ange ett metavärde.

Det vill säga om du bara skickar ett kommentar ID och metatangent till delete_comment_meta funktion, kommer det att ta bort alla bitar av kommentarmetadata. Skriv och kör följande kod:

Uppdatera din sida och granska sedan databasen. Om det inte fanns några problem, bör din databas vara klar från alla poster som tidigare hade den metatangenten:

Men kom ihåg att borttagning av data från en databas kan vara farlig, särskilt om du oavsiktligt raderar något som du aldrig menade att ta bort. För det ändamålet är det viktigt att hålla säkerhetskopior av din databas i produktionsmiljöer så att du alltid kan återställa den om något går fel.

Dessutom demonstrerar detta varför det är så viktigt att ha en lokal utvecklingsmiljö och en scenmiljö för testning innan koden används till en produktionsmiljö.

Den fullständiga källkoden

Som det finns i hela serien, här är en kopia av all källkod som vi har behandlat i den här artikeln. Det är fullt dokumenterat och innehåller kommentarer som inte visas i några av de ovanstående sektionerna.

Observera att om du inkluderar detta med koden från resten av artiklarna i serien måste du vara försiktig. Eftersom allt är registrerat med samma krok kan du sluta med konstiga resultat.

För att bekämpa detta rekommenderar jag ett av följande två scenarier:

  1. Skapa tre separata filer: en för varje typ av metadataprogram som vi har granskat.
  2. Kommentera add_filter samtal, förutom de som du arbetar med.

Endera av dessa kommer att göra det lättare att arbeta med hela koden som vi har täckt hittills.

Slutsats

Oavsett om du arbetar med ett metadataprogram eller ett annat API måste varje WordPress-utvecklare alltid ha snabb åtkomst till WordPress Codex för att snabbt undersöka vilka API-filer som finns och hur de ska användas.

Eftersom vi har arbetat igenom den här serien bör du se hur det API som är utformat kring metadata är konsekvent. Detta ger ett lättanvänt, kraftfullt API för att utvidga en del av den centrala WordPress-funktionaliteten.

Dessutom har jag nämnt att det finns ett annat metadatap API som introducerades i WordPress 4.4. Jag planerar att täcka det i en kommande serie, men det kommer att kräva en undersökning av någon av de andra funktioner som bygger på den. 

För närvarande har vi täckt massor av material som hjälper dig att jämföra dina befintliga WordPress-färdigheter. Fram till nästa artikel, kom ihåg alla mina kurser och handledning finns på min profilsida, och du kan läsa mer artiklar om WordPress och WordPress-utveckling på min blogg. 

WordPress har en aktiv ekonomi. Det finns teman, plugins, bibliotek och många andra produkter som hjälper dig att bygga upp din webbplats och ditt projekt. Plattformens open source-natur gör det också till ett bra alternativ, från vilket du kan förbättra dina programmeringsförmåga. Oavsett fall kan du se vad allt finns tillgängligt på Envato Marketplace.

Följ mig också på Twitter på @tommcfarlin, där jag pratar om olika mjukvaruutvecklingsmetoder, varav många är relevanta för webbutveckling och många av dem är specifikt inriktade på WordPress.

Som med alla mina artiklar, tveka inte att lämna några frågor eller kommentarer i foderet nedan, och jag vill sikta på att svara på var och en av dem.

Medel

  • Anpassade fält
  • add_comment_meta
  • update_comment_meta
  • get_comment_meta
  • delete_comment_meta
  • rand
  • eko
  • var_dump