WordPress-inläggstyper: en abstraktion för enheter
När programmerare pratar om entiteter talar de vanligtvis om ett koncept eller något som existerar inom ett system. Ibland är det en klass, ibland är det ett bibliotek eller beroende, eller så kan det vara något som liknar WordPress-inläggstyper.
Om WordPress ska ses som en applikationsbas (mot ett ramverk) är det viktigt att tänka på vissa funktioner på ett sätt som kan behandlas som entiteter. I exemplet ovan är en posttyp just det.
När anpassade inläggstyper introducerades gav det oss ett sätt att introducera något annat än sidor och inlägg i applikationen. Nu kan vi implementera vilket koncept som helst – som en händelse – och behandla det som sin egen enhet i systemet.
Men när allt är sagt och gjort sparas allt i inläggstabellen. Och det är bra eftersom mjukvaruutveckling handlar om abstraktion. När vi implementerar WordPress-inläggstyper implementerar vi en abstraktion ovanpå idén med inlägg.
WordPress-inläggstyper
I det förra inlägget gick jag igenom processen att skapa en användare som i slutändan kommer att associeras med någon enhet i WordPress-applikationen.
- Kanske är han/hon författaren till ett inlägg,
- Kanske är han/hon säljaren av en produkt,
- Kanske är han/hon berättaren av en berättelse,
- Eller vad du nu kan tänka dig.
Möjligheterna är oändliga. Men innan vi pratar om hur man skapar en association mellan de två enheterna – det vill säga användaren och inläggstypen WordPress – måste vi prata om hur man implementerar en enhet eller en anpassad inläggstyp programmatiskt.
Det finns en hel del dokumentation om detta, och det finns många handledningar om detta, så jag tänker inte förtydliga poängen. Istället ska jag försöka hålla det här så barbent som möjligt. Kom ihåg att målet med hela den här serien är att i slutändan komma till en punkt där vi associerar enheter via metadata.
Men innan vi gör det måste vi skapa enheterna. Vi har alltså en användare så låt oss göra det.
För vårt exempel, låt oss säga att användaren vi skapade i förra inlägget, Meghan, är författaren till en bok. Och inom en WordPress-installation som hanteras av någon annan, finns det en anpassad inläggstyp för böcker som var och en har några attribut:
- titel,
- beskrivning,
- publiceringsdatum,
- ISBN,
- antal första sålda exemplar,
- där det kan köpas,
- och så vidare.
Du kan lägga till mer eller mindre till din implementering. Faktum är att du kanske sysslar med att sälja e-böcker och bokens URL för köp är ett av attributen. Hur det än är så förstår du idén.
Med det sagt kan vi implementera en enkel anpassad inläggstyp för "böcker" programmatiskt.
Implementera en posttyp
Och det ser ut så här :
<?php
add_action( 'init', 'acme_create_book_post_type' );
/**
* Creates a new custom post type called 'Book' using the smallest number of arguments
* to prepare the post type.
*/
function acme_create_book_post_type() {
$args = array(
'labels' => array(
'name' => 'Books',
'singular_name' => 'Book',
),
'public' => true,
);
register_post_type( 'acme_book', $args );
}
Om du läser dokumentationen om att skapa anpassade inläggstyper finns det inget onormalt med detta. Det ska se ut precis som du förväntar dig.
Beträffande var du skapar detta beror på typen av ditt projekt. Det finns många människor som kommer att argumentera för att det är i ett plugin eller är inbakat i ett tema. Det här är inte platsen att diskutera det. Det räcker med att säga att jag för mina syften antar att det är en del av samma plugin från den tidigare handledningen.
Dessutom avviker jag inte från anpassade taxonomier, kommentarer eller någon annan anpassad typ av data som är möjliga att associera med en anpassad inläggstyp.
Därifrån tar vi sedan en titt på hur detta ser ut i WordPress administrationsområdet samt hur det ser ut i databasen.
Titta bakom ridån
Först, så här ser det ut (eller bör se ut) i WordPress-administrationsområdet:
Och om du tittar på databasen efter att ha skapat en post, ser du något i stil med detta:
Självklart har jag begränsat posterna som returneras i databasens frontend genom att filtrera resultaten för att göra skärmdumpen lättare att följa.
På Böckerna
Och det är det, verkligen. Jag menar, på den mest grundläggande nivån är det här hur du skapar en anpassad inläggstyp i WordPress. Jag vet att det inte är något nytt, men om jag kunde göra ett lite starkare argument för ett sådant här inlägg skulle det innehålla följande två punkter.
1 Det handlar om abstraktioner
Om du vill börja bygga webbapplikationer med WordPress är det viktigt att sluta tänka på saker i traditionella termer som inlägg, sidor, kommentarer och kategorier, och börja tänka på dem som mer generiska abstraktioner.
Entiteter, som nämnts tidigare i artikeln. När du väl gör det kommer du att ha en förändring i den mentala modellen som driver din förmåga att tänka igenom och implementera en lösning.
2 Det handlar om relationer
Även om vi ofta tänker på saker i deras individuella delar som inlägg och sidor, vet vi att inlägg kan ha kommentarer, kommentarer kan ha svar, sidor kan ha mallar och så vidare.
Det finns relationer mellan alla dessa individuella saker som är en del av systemet. Och när du börjar tänka på att relationerna är något som gör att vi kan göra mer, börjar du se hur kraftfullt något kan vara. Det är helt "helheten är större än summan av dess delar."
Så när du väl har enskilda enheter på plats och när du börjar se hur de kan relatera till varandra, tar du ett steg upp i att skapa något som löser ett lite mer komplext problem från till synes enkla delar.
Och det är dit vi ska gå härnäst.
Hur är det med metadata?
Hela syftet med den här serien är att gå igenom hur man skapar en association mellan enheter, eller hur? Specifikt vill vi skapa en koppling mellan en användare och ett inlägg eller, mer specifikt, en författare och en bok.
WordPress ger grunden för att göra detta och det är här kraften hos ytterligare bord och krokar kan komma in i bilden. I nästa inlägg ska jag prata om hur man skapar den här associationen, riktningarna föreningarna kan gå och hur man arbetar med denna data om, säg, en användare raderas från applikationen.
Serie inlägg
- WordPress Metadata Association: Hur man gör det
- Skapa WordPress-användare programmerat
- WordPress-inläggstyper: en abstraktion för enheter
- WordPress Metadata Association: Relaterande enheter

