Gjennom hele denne serien har vi sett på et antall metadata-APIer som tilbys av WordPress. Dette inkluderer Post Meta API og User Meta API. I dag skal vi avrunde serien ved å se på WordPress Comment Meta API.
Merk at dette er at den endelige metadata API WordPress tilbyr. Som i WordPress 4.4 er det nå en Term Metadata API. For å forstå det fullt ut, er det viktig å forstå taksonomier, vilkår og forhold i WordPress-sammenheng. I en kommende serie vil jeg dekke akkurat det.
Men i dag skal vi fokusere på å administrere metadata knyttet til kommentarer. Hvis du ikke har lest noe annet i denne serien frem til dette punktet, anbefaler jeg å vurdere hva vi har dekket så langt.
Hvis du er fanget opp, la oss komme i gang.
Gjennom hele denne serien har vi brukt WordPress-definisjonen av metadata som grunnlag for å forstå hvordan denne informasjonen er representert i sammenheng med vårt miljø.
Spesielt har vi sagt:
Metadata håndteres med nøkkel / verdi par. Nøkkelen er navnet på metadataelementet. Verdien er informasjonen som vil vises i metadata-listen på hvert enkelt innlegg som informasjonen er knyttet til.
I samsvar med resten av innholdet som vi har sett i hele denne serien, gjelder denne definisjonen med kommentormetadata, akkurat som det gjorde med postmetadata og brukermetadata.
Opptil dette er at når du har fått et håndtak på de ulike metadata-APIene som vi har dekket, bør det være svært lite overraskelse med hvordan andre metadatafunksjoner fungerer. Det kan være noen ting forskjellige, avhengig av hvilken API du bruker, men funksjonen vil være den samme.
Og, som du vil se, fortsetter dette å være tilfelle med kommentaren metadata API.
Som med de andre APIene vi har undersøkt gjennom denne serien, er det fire primære funksjoner som vi skal utforske:
add_comment_meta
update_comment_meta
get_comment_meta
delete_comment_meta
Nå vet du sannsynligvis hva du kan forvente når det gjelder å si forskjellene mellom å legge til metadata og oppdatere kommentat metadata. Eller si, jobber med å slette kommentarmetadata.
Det endrer ikke det faktum at det er verdt å utforske hver av disse API-funksjonene i detalj for å sikre at vi har dekket alt det er å vite når de jobber med dem.
For resten av denne artikkelen antar jeg følgende:
tutsplus-metadata.php
sett opp i temaets katalog, og det er inkludert i temaet ditt functions.php
fil.Som jeg har brukt gjennom de forrige artiklene, bruker jeg følgende programmer:
Til slutt lagres alle metadataene vi jobber med i wp_commentmeta
database tabell, så alle skjermbilder som du ser av databasen vil være av det aktuelle tabellen.
I motsetning til noen av de andre metadatabordene vi har sett, wp_commentmeta
Tabellen starter tom (forutsatt at du jobber med en relativt fersk versjon av WordPress).
Dette er bra da det vil gi oss en ren skifer, av forskjellige slag, som skal brukes når du undersøker de ulike API-funksjonene. Merk at for alle eksemplene nedenfor skal vi sørge for at alt dette skjer på Hei Verden! post. Dette innlegget har ID av 1. Hvis du vil bruke en annen side, kan du bare erstatte 1 med ID av posten i spørsmålet.
Med alt dette på plass, la oss begynne å se på hva som er tilgjengelig.
For å komme i gang med å legge til metadata til våre kommentarer, er det viktig å ta en titt på wp_comments
bord for å se hvilke kommentarer som allerede finnes. Hvis du jobber med en ny installasjon av WordPress, vil du sannsynligvis se en enkelt post:
Dette er standardkommentaren som leveres med WordPress, og det vil gjøre det bra for eksemplene vi skal bruke.
Hvis du derimot jobber med en database full av kommentarer, ikke noe problem! Alt du trenger å vite er hvilken kommentar du arbeider med (via sin ID), og sørg for at du er i overensstemmelse med koden vi bruker nedenfor.
Som med andre APIer vi har vurdert i denne serien, legger vi til metadata til kommentarer kommer i to former: unikt og ikke-unikt. Vi skal gjennomgå begge deler.
De add_comment_meta
funksjonen aksepterer tre parametere og en valgfri fjerde parameter. Hvis du passerer ekte
Som den fjerde parameteren, blir metadataene bare lagt til hvis den oppgitte metatasten ikke eksisterer.
Gir mening? La oss ta en titt. Først vil vi sette opp en funksjon som vil legge til noen metadata knyttet til den første kommentaren (men vil bare gjøre det på innlegget som har ID på 1):
Legg merke til at jeg har passert den ekte parameteren. Så hver gang jeg oppdaterer siden, vil WordPress se at jeg vil ha denne verdien til å være unik, så det vil ikke legge til mer informasjon i databasetabellen som er knyttet til den metatasten.
Legge til ikke-unike metadata
Hvis jeg derimot ønsker å knytte flere verdier med samme meta-nøkkel, fjerner jeg den ekte parameteren. Bruk for eksempel følgende kode:
Og så oppdater siden, si tre ganger. Hvis alt går som forventet, kan du se tre nye poster, som hver inneholder et tilfeldig tall som genereres av samtalen til
rand ()
i meta-verdien argumentet.Det er lett nok å holde seg rett, ikke sant? Hvis du vil ha en enkelt verdi knyttet til en enkelt nøkkel, så pass
ekte
som valgfritt fjerde argument; ellers, ikke spesifiser noe.Oppdaterer kommentar Meta
Hvis du vil oppdatere eksisterende kommentarmetadata, er det viktig å kjenne kommentar-ID, meta-nøkkelen og meta-verdien. Dette betyr at WordPress vil se på den angitte metatasten og knytte den til den angitte metaværdien.
Hvis metaværdien eksisterer, blir den overskrevet. Hvis metaverdien ikke eksisterer, blir den opprettet. Legg merke til i den siste setningen at det er litt funksjonalitet som du kan bruke når du legger til metadata: Hvis du vil ha et unikt stykke informasjon skrevet til metadatabordet, kan du bruke
update_comment_meta
og det vil skrive det som en unik verdi.Dette kan føre til litt forvirrende kode (siden det leser som om det oppdateres noe som ikke eksisterer), men det tillater deg også å håndheve at det bare finnes en enkelt plate for den oppgitte meta-nøkkelen.
Hva skjer når det er en metatast forbundet med flere meta verdier? I så fall må du vite verdien du vil erstatte. I noen tilfeller kan du kanskje vite nøyaktig hva dette er. I andre tilfeller må du kanskje hente informasjonen for å finne den (som vi vil dekke i neste avsnitt).
Forutsatt at vi vil oppdatere en av postene vi har opprettet, for eksempel et av de tilfeldige tallene vi så i eksemplet ovenfor, kan vi se det opp ved hjelp av databasens forkant:
Og spesifiser den som forrige verdi i følgende kode:
Deretter kan vi oppdatere siden, ta en titt i vår database, og se endringen. Legg merke til at arbeidet vi nettopp gjorde er relevant for et utviklingsmiljø, og det er ikke måten du håndterer på dette i produksjonen.
I stedet må du kanskje kjøre et spørsmål eller hente et sett med verdier før du oppdaterer dem. Dette fører oss inn i neste emne.
Henter kommentar Meta
Når du henter kommentarer-metadata, må du bestemme om du vil hente en enkelt verdi eller alle verdiene som er knyttet til den angitte metatasten.
Kanskje en annen måte å se på dette er som følger: Hvis flere stykker metadata er lagt til med samme meta-nøkkel (som vi dekket i Legge til unike metadata delen ovenfor), vil du sannsynligvis ønske å hente hele samlingen av poster.
Hvis du derimot bare ønsker å hente en post fordi du vet at den er unik eller fordi den ble opprettet med
update_comment_meta
funksjon, vil du at WordPress skal returnere den til deg i en enkelt verdi.De
get_comment_meta
funksjonen krever tre argumenter og en valgfri fjerde avhengig av hva du vil hente.Henter en array
La oss si at du ønsker å hente en samling av alle verdier som er knyttet til en enkelt metatast. For å gjøre dette, vil du ringe til
get_comment_meta
og du vil angi kommentar-ID og meta-nøkkelen.I koden ovenfor skriver vi ut det til nettleseren, men du vil kunne arbeide med disse dataene på en måte du vil ha når du har hentet den. Det viktigste er å merke seg at verdien returneres som en matrise.
Henter en enkelt verdi
Hvis du vil hente en enkelt verdi, må du bare angi kommentasjons-ID og metatasten i
get_comment_meta
funksjon. Hvis du tilfeldigvis har å gjøre med en meta-nøkkel med flere verdier, er den første verdien som ble opprettet, det som vil bli returnert.For eksempel, la oss si at det er tre poster knyttet til en meta-nøkkel, og du vil bare hente en verdi. Koden din vil se slik ut:
Og den resulterende verdien vil se slik ut:
streng (9) "967432645"Alternativt, hvis du vet at dataene er unike, så vil koden fortsatt se ut som den returnerte verdien.
Den eneste forskjellen er at det første eksemplet ble hentet fra et sett med flere poster, og det andre eksemplet ble hentet fra en enkelt plate. Vær også oppmerksom på at hvis du har en unik verdi, vil den fortsatt bli returnert til deg som en matrise, men en enkelt indeksarray.
Dette er viktig å merke seg fordi hvis du planlegger å gjøre noen form for sammenligning, spesielt til en verdi av en annen type, for eksempel et heltall, må du ta tak i verdien fra arrayet, og du vil sannsynligvis vil gjøre type konvertering før du gjør en sammenligning.
Slette kommentar Meta
Slette metadata er en enkel operasjon: Det krever kommentasjons-ID, en metatast og en valgfri metaværdi.
Hvis du ikke angir metaværdien, blir alle poster tilknyttet metatasten fjernet. Hvis du imidlertid angir metaværdien, blir bare den enkelte posten fjernet.
Fjerner unike verdier
For formålet med dette eksemplet, anta at vi vet at et enkelt stykke metadata eksisterer for en gitt meta-nøkkel. Dette betyr at meta-nøkkelen må være unik for hver bruker, så det bruker kanskje noe som en unikt generert ID, et tidsstempel eller noe lignende.
For å fjerne en unik verdi, sender vi bare kommentasjons-ID og meta-nøkkelen:
Før du kjører denne koden, bør databasen se slik ut:
Etter at du har oppdatert siden, ta en titt på databasen, og du bør se at posten er fjernet, og databasen skal se slik ut:
Vi snakker litt mer om forholdsregler som skal tas når du sletter data i neste avsnitt.
Fjerner ikke-unike verdier
I andre situasjoner, la oss si at det er flere verdier knyttet til en enkelt metatast. Vi har sett dette mange ganger gjennom denne artikkelen. Hvis du vil slette alle poster som er tilknyttet en metatast, trenger du ikke å spesifisere en metaværdi.
Det vil si hvis du bare sender en kommentar ID og meta nøkkel til
delete_comment_meta
funksjonen, vil den fjerne alle biter av kommentarmetadata. Skriv og utfør følgende kode:Oppdater siden din og deretter gjennomgå databasen. Hvis det ikke var noen problemer, bør databasen være fri for alle poster som tidligere hadde den meta-nøkkelen:
Men husk at å fjerne data fra en database kan være farlig, spesielt hvis du ved et uhell sletter noe du aldri mente å slette. For det formål er det viktig å beholde sikkerhetskopier av databasen i produksjonsmiljøer slik at du alltid kan gjenopprette det hvis noe går galt.
Videre viser dette hvorfor det er så viktig å ha et lokalt utviklingsmiljø og et scenemiljø for testing før distribusjon av koden til et produksjonsmiljø.
Den komplette kildekoden
Som angitt gjennom hele denne serien, her er en kopi av all kildekoden som vi har dekket i denne artikkelen. Det er fullt dokumentert og inneholder kommentarer som ikke vises i noen av seksjonene ovenfor.
Merk at hvis du inkludere dette med koden fra resten av artiklene i serien, må du være forsiktig. Siden alt er registrert med samme krok, kan du ende opp med rare resultater.
For å bekjempe dette, anbefaler jeg ett av følgende to scenarier:
- Opprett tre separate filer: en for hver av de metadata-APIene vi har undersøkt.
- Kommentere
add_filter
samtaler, unntatt de du jobber med.Enten av disse vil gjøre det lettere å jobbe med all den koden vi har dekket så langt.
Konklusjon
Enten du jobber med en metadata-API eller en av de andre APIene, bør hver WordPress-utvikler alltid ha rask tilgang til WordPress Codex for å raskt undersøke hvilke APIer som er tilgjengelige og hvordan de skal brukes.
Som vi har arbeidet gjennom denne serien, bør du se hvordan API-en som er utformet rundt metadata, er konsistent. Dette gir en enkel å bruke, kraftig API for å utvide noen av de viktigste funksjonene i WordPress.
I tillegg har jeg nevnt at det er en annen metadata-API som ble introdusert i WordPress 4.4. Jeg planlegger å dekke det i en kommende serie, men det vil kreve en undersøkelse av noen av de andre funksjonene som er basert på den.
For nå har vi dekket mye materiale for å hjelpe deg med å utjevne dine eksisterende WordPress-ferdigheter. Inntil neste artikkel, husk alle kursene mine og veiledningene er tilgjengelige på min profilside, og du kan lese flere artikler om WordPress og WordPress-utvikling på bloggen min.
WordPress har en aktiv økonomi. Det er temaer, plugins, biblioteker og mange andre produkter som hjelper deg med å bygge opp ditt nettsted og prosjekt. Platformen med åpen kildekode gjør det også et godt alternativ som du kan forbedre programmeringsevnen din. Uansett, kan du se hva vi har tilgjengelig på Envato Marketplace.
Du er også velkommen til å følge meg på Twitter også på @tommcfarlin, der jeg snakker om ulike programvareutviklingspraksis, hvorav mange er relevante for webutvikling og mange av dem er spesielt rettet mot WordPress.
Som med alle mine artikler, vennligst ikke nøl med å legge igjen noen spørsmål eller kommentarer i feedet under, og jeg vil sikte på å svare på hver av dem.
ressurser