Forstå og jobbe med metadata i WordPress

Så langt i denne serien har vi sett på hovedinnholdstyper i WordPress. Men hva med de ekstra dataene om alt innholdet? 

Det er der metadata kommer inn i spill.

Som jeg dekket i en tidligere del av denne serien, har WordPress fire hovedinnholdstyper som den lagrer i fire databasetabeller:

  • innlegg
  • brukere
  • kommentarer
  • lenker

De tre første av disse kan også ha metadata tildelt dem, og hver har sin egen metadatabord i databasen for å lagre dette.

Hva er metadata?

Metadata kan beskrives som data om data. Wikipedia definerer to typer metadata:

Strukturelle metadata handler om utforming og spesifikasjon av datastrukturer og er mer riktig kalt "data om containere av data"; beskrivende metadata, På den annen side handler det om individuelle forekomster av applikasjonsdata, datainnholdet.

Med denne definisjonen bruker WordPress beskrivende metadata. Det vi definerer som data i WordPress, og hva som kan defineres som metadata, er litt uskarpt, og svarer ikke direkte til det som er lagret i metadatabordene. For eksempel:

  • For innlegg, post_type er et eksempel på metadata, men det er lagret i wp_posts bord
  • Taksonomi, kategorier og koder kan også løst defineres som metadata, men disse lagres helt separat, i deres egne databasetabeller.
  • Legg inn metadata, for eksempel egendefinerte felt, og ytterligere metadata som er lagt til via plugins, lagres i wp_postmeta bord, som du forventer.

Så det er enklere å tenke på metadata i WordPress, ikke i henhold til den strenge definisjonen av begrepet, men som data lagret i de tre metadatabordene.

Metadatabordene

WordPress bruker tre databasetabeller for metadata:

  • wp_postmeta lagrer metadata om innlegg (inkludert vedlegg, navigasjonsmenyelementer og revisjoner)
  • wp_commentmeta lagrer metadata om kommentarer
  • wp_usermeta lagrer metadata om brukere

Den eneste objekttypen i WordPress som ikke har metadata er lenken.

Metadatabordene er nesten nesten identiske fordi de bare har fire felt:

  • ID er ID for innlegget, brukeren eller kommentaren som metadataene gjelder
  • Meta-ID refererer til ID-en til metadataposten
  • Nøkkelen er metatasten (som ofte dupliseres mellom forskjellige poster)
  • Verdi er metaverdien (som pleier å være unik)

WordPress kan bruke denne strukturen til å lagre store mengder metadata ved hjelp av en enkel struktur. Dette betyr at funksjonene du bruker til å vise og spørre metadata for innlegg, brukere og kommentarer, er svært like.

Metadata Lagret av WordPress

Metadataene som er lagret i et enkelt WordPress-installasjon, vil variere fra det som er lagret i en annen installasjon, fordi plugins og temaer kan legge til egne metadata, og fordi på enkelte nettsteder må du definere bestemte metadata mens i andre du ikke vil. 

Men la oss se på noen av de vanligste typene metadata:

  • Egendefinerte felt. Disse gjelder for innlegg som er lagret i wp_postmeta bord. Du kan legge til dem ved hjelp av det vanlige brukergrensesnittet eller ved å lage dine egne metaboxer i skjermbildene etter redigering. Dette kan være spesielt nyttig når du vil at brukerne skal kunne legge til metadata til en bestemt posttype, og du vil gjøre grensesnittet så brukervennlig som mulig.
  • Bruker Metadata. De wp_usermeta Tabellen lagrer metadata om de fleste brukere, for eksempel roller, evner, dashbordinnstillinger og til og med for- og etternavn.
  • Metadata lagt til av plugins og temaer. Plugins med kommentare funksjonalitet som Akismet vil legge til metadata til wp_commentmeta tabell, mens plugins som lar deg legge til metadata til innlegg, for eksempel SEO plugins, vil legge til poster i wp_postmeta bord. Du kan teoretisk legge til metadata via temaet ditt, men det er mer fornuftig å gjøre dette i et plugin, da det generelt er relatert til funksjonalitet og ikke vises.

Selvfølgelig er listen ikke begrenset til disse typene. Faktisk lagres data om innlegg, kommentarer eller brukere som ikke kan lagres i deres hoveddatabase tabeller i de relevante metadatabordene. 

Hvis du legger til et nytt felt for å lagre data, bør du alltid bruke disse tabellene og ikke kjernebordene.

Å få tilgang til og utføre metadata

WordPress har en metadata API som du bruker til å legge til, endre, få og slette metadata. Det finnes en rekke funksjoner som er spesifikke for hver type metadata som du bruker til å skrive ut metadata i malfiler: du bør bruke disse i stedet for noen generiske metadatafunksjoner.

Metadata API-funksjonene for hver innholdstype er svært like og har samme parametere:


Legge til metadata Få metadata Oppdaterer metadata Slette metadata
innlegg add_post_meta () get_post_meta () update_post_meta () delete_post_meta ()
brukere add_user_meta () get_user_meta () update_user_meta () delete_user_meta ()
kommentarer add_comment_meta () get_comment_meta () update_comment_meta () delete_comment_meta ()
parametere $ POST_ID, $ meta_key, $ meta_value, $ unik (valgfri) $ POST_ID, $ meta_key, $ singel (valgfri), 
$ POST_ID, $ meta_key, $ meta_value, $ prev_value (valgfri) $ POST_ID, $ meta_key, $ meta_value (valgfri)

Disse funksjonene kan brukes i malfiler og plugins, for eksempel i temaets enkeltmail, kan du bruke følgende til å skrive ut metadata om innlegget:

Dette er bare en veldig enkel måte å utdata noen metadata på - det er mange flere muligheter, noen av hvilke jeg vil dekke senere i denne serien.

Sammendrag

WordPress bruker tre metadatabord til å lagre data om tre innholdstyper: innlegg, brukere og kommentarer. Disse tabellene brukes til alt som ikke er lagret i kjernen wp_posts, wp_users og wp_comments tabeller, og er tabellene du bør skrive data til hvis du legger til nye felt via temaer eller plugins. De tre tabellene fungerer på nesten identiske måter og har svært liknende funksjoner som du kan bruke til å legge til, oppdatere, slette og få metadata.

Som nevnt ovenfor, kan taksonomiske termer bli sett på som en annen type metadata i WordPress, og dette er hva jeg vil dekke i neste del av denne serien.