Vid denna tidpunkt i serien är vi till sist kunna börja bygga vårt plugin med hjälp av objektorienterade tekniker som vi har lärt oss hittills i serien.
Om du just nu går med oss rekommenderar jag starkt att fånga upp serien hittills; annars riskerar du att missa några av de viktigaste punkterna som vi kommer att demonstrera när vi bygger ut pluginet över de följande artiklarna.
Okej, så med det sagt, är det äntligen dags att börja skriva kod. Innan vi börjar är det viktigt att förstå att bygga ett plugin - eller någon typ av programvara för den delen - kräver ett antal steg, och även om vi ska skriva lite kod i den här artikeln kommer vi inte att vara lägger till mycket funktionalitet tills vi har byggnadsställningen eller grunden för plugin.
För att kunna göra det måste vi granska flera saker:
Så låt oss täcka de här punkterna väldigt snabbt, och då kommer vi in i detaljerna i plugin.
Under de kommande artiklarna kommer vi att bygga ett plugin som introducerar en post-metakassa i den enkla postredigeringsvyn som visar alla metadata som är kopplade till det aktuella inlägget.
Pluggen kommer att vara skrivskyddad eftersom du bara kan se metadata som är associerade med plugin. Vi kommer inte att kunna introducera några nya metadata - åtminstone inte för den första versionen.
De andra funktionerna är att den ska visa den i ett rent, organiserat format så att vi enkelt kan identifiera nyckeln och värdena för post-ID. Vi introducerar också ett ankare som tillåter oss att kopiera en kodlinje som tillåter oss att ringa till informationen i form av get_post_meta ($ post_id, $ meta_key, $ meta_value);
.
Innan vi går längre finns det många snygga funktioner som vi kan implementera i det här plugin.
Vi kunde introducera förmågan att:
Men i linje med filosofin att skapa en "stark 1,0" kommer vi att bygga en mager, fokuserad grund som vi kan fortsätta att bygga ut plugin som vi passar efter denna serie.
Kanske kommer vi att täcka några av ovanstående funktioner före slutet av serien, kanske du vill presentera din egen uppsättning funktioner. Vilket som går bra. Grunden är att vi ska bygga en stark kärna av som vi kan fortsätta att iterera på för att utöka funktionaliteten.
Så med allt det sagt, låt oss först prata genom de höga punkterna i pluginet, så tar vi en titt på hur vi ska organisera filerna och komponenterna i pluginprogrammet.
Ljud förvirrande? Förhoppningsvis ser och tittar på filstrukturen och den grundläggande provkoden hjälper det här att fortsätta att göra mer mening.
Med det sagt, låt oss ta en titt på hög nivå på de komponenter som kommer att interagera med varandra, så tar vi en titt på hur filerna ska organiseras. Därefter kommer vi att sticka ut koden för pluginet som vi fyller i i nästa artikel.
Specifikt kommer plugin att bestå av följande komponenter - eller filer - som kommer att utgöra källan till plugin. Efter att ha tittat på fillistan tittar vi på ett diagram över hur alla styckena ska interagera.
single-post-meta-manager.php
är den primära filen som registrerar pluginet med WordPress och sätter allt i gång.klass-single-post-meta-manager-admin.php
är filen som är ansvarig för att registrera och skriva in stilark samt visa användargränssnittet som innehåller postdata.single-post-meta-manager-admin.css
är det stilark som ska ställa in användargränssnittet.klass-single-post-meta-manager-loader.php
är filen som kommer att samordna åtgärder och filter mellan kärnproppen och administrationsklassen.klass-single-post-meta-manager.php
är kärnproppfilen som innehåller information om pluginversion, plugin slug information, referenser till lastaren och filen där vi instruerar lastaren vilka objekt och funktioner som är ansvariga för att visa det administrativa användargränssnittet.README.md
ger de vanliga instruktionerna för hur du kommer igång med plugin.CHANGES.md
tillhandahåller en lista över ändringar som sker i varje version av plugin som vi släpper ut.Beroende på din erfarenhetsnivå med objektorienterad programmering kan det här eller kanske inte tyckas som många filer för en relativt enkel uppsättning funktioner. Det finns dock fortfarande mer på det: Vi kommer inte att släppa alla dessa filer i roden i plugin-katalogen.
I stället ska vi ta det ett steg längre och organisera saker i rätt kataloger också. När vi granskar det så tittar vi på organisationen av komponenterna i form av ett diagram och sedan granskar vi koden som ger byggnadsställningen för plugin.
Filorganisationen är relativt enkel och är troligen bäst demonstrerad genom att använda en bild:
För att vara tydlig, här är brytningen av vad du ser på skärmbilden ovan:
admin / klass-single-post-meta-manager-admin.php
admin / css / single-post-meta-manager.admin.css
includes / klass-single-post-meta-manager-loader.php
includes / klass-single-post-meta-manager.php
språk/
single-post-meta-manager.php
CHANGES.md
README.md
license.txt
Det här är viktigt att känna igen och det finns ett par ställen i koden där vi ska registrera beroenden och det är viktigt att veta var Beroendet är så att vi kan ge rätt väg till dem.
Vid denna tidpunkt är vi redo att börja knäppa ut de klasser som vi ska använda. Det finns flera viktiga saker att notera om koden du ska se:
Med det sagt, om du har frågor om koden, var god att lämna kommentarer om detta, dock kan jag säga vänta tills nästa artikel för att se svaret.
Nu vidare till koden.
Kärnproppfilen är ansvarig för att registrera pluginet med WordPress och kommer slutligen att ansvara för att importera kärnproppklassen (som vi granskar på bara en liten bit) och faktiskt sätter in plugin i rörelse.
Observera att det är villkorligt att vi har längst ner i filen. Detta säkerställer att pluginfilen inte kan nås direkt i webbläsaren.
Administrativa filer
Alla dessa filer bor i
administration
katalog enligt ovanstående.Den enda inlägget Meta Manager Admin Class
Den här klassen kommer att ange stilarket och göra meta-rutan som ska användas för att visa den angivna posten meta.
version = $ version; offentlig funktion enqueue_styles () allmän funktion add_meta_box ()I den här klassen märker du att den har en enda skyddad egenskap för
$ version
av plugin. Detta attribut är inställt i klassens konstruktör.Vi ser hur detta passar ihop senare i koden.
Den enkla posten Meta Manager Stylesheet
Just nu finns det ingen kod att visa för den här filen. Men fortsätt och lägg till den till
admin / css
underkatalog som det vi än så länge kommer att använda för att ställa in instrumentpanelen.inkluderar
Dessa är kärna pluginfiler som ansvarar för att samordna information mellan de olika krokarna och det administrativa området för plugin.
Enkelt inlägg Meta Manager Loader
Denna klass kommer att användas av den primära plugin-klassen för att samordna alla krokar som finns i plugin och den administrativa klassen som vi definierade ovan.
Observera att i klassen ovan har vi markerat attributen som
skyddad
. Detta görs så att den här klassen har tillgång till dess attribut, men inga andra klasser gör det.Dessutom har vi gått och gjort detta bara om vi underklassar den här klassen i en framtida iteration av plugin.
Enkel inlägg Meta Manager
Slutligen har vi den primära plugin-klassen som är ansvarig för att ladda beroenden, ställa in lokalen och koordinera krokarna.
plugin_slug = 'single-post-meta-manager-slug'; $ this-> version = '0.1.0'; privat funktion load_dependencies () privat funktion define_admin_hooks () public function run () public function get_version () returnera $ this-> version;Observera i koden ovan, vi har ytterligare
skyddad
attribut, ett parprivat
funktioner och aoffentlig
funktion som används som getter som vi ska använda när vi fortsätter att bygga ut plugin.I nästa artikel lägger vi mycket tid i den här klassen eftersom det här är utgångspunkten för var mycket funktionalitet händer.
Kommer härnäst
Vi har täckt mycket material i den här artikeln, men det finns uppenbarligen mycket mer att göra. Förutom att tillhandahålla dokumentation för våra funktioner måste vi faktiskt genomföra funktionalitet som gör att byggnadsställningen blir till liv.
I nästa artikel i serien kommer vi att göra just det, varefter vi kommer att uppmärksamma oss på att dokumentera koden.
Som tidigare nämnts, vänligen lämna några frågor och / eller kommentarer om koden ovan. För de som är intresserade kan du alltid bläddra i det aktuella läget för projektet på GitHub.
Fram till nästa artikel!