Har du någonsin försökt att bygga metaboxer i WordPress? Det är en röra, inte bara för nybörjare men även för avancerade WordPress-utvecklare. Lyckligtvis för WordPress-samhället kan samhället själv komma fram med eleganta lösningar för dessa typer av rotiga problem. CMB2 är en av dem.
I den här delen av "Toolbox of the Smart WordPress Developer" -serien går vi igenom CMB2, ett omfattande bibliotek för att utveckla anpassade metaboxer och formulär i WordPress.
Eftersom det här inte är en handledning om att skapa anpassade metaboxer, kommer jag inte att lära dig hur man gör det med hjälp av kärnfunktionalitet, men jag ger ut några användbara länkar. I stället ska jag gå över den vardagliga rutinen av den:
Skapa metaboxen: Visserligen använder den här delens nödvändiga och jämn CMB2 ett liknande sätt att göra det - du måste skapa den anpassade metaboxen med hjälp av add_meta_box ()
funktion ... inom en funktion som krokar till add_meta_boxes
verkan. Inte för lätt, inte för hårt, men mellan de två.
Skapa fälten som ska visas i metaboxen: I den här delen måste du skapa en separat funktion (som du också måste referera till i add_meta_box ()
funktion) och skriv vanilj HTML i den, som div
s och märka
s och inmatning
s, för att visa dina formulärfält, vilket inte fungerar om du inte binder HTML med komplicerat PHP. Textinmatningar är bra, men skapar rullgardinsmenyer eller kryssrutor? Förbered dig för att bli förvirrad. (Kommit mig inte ens igång på filuppladdningar och färgplockare.) Åh, du glömde att använda wp_nonce_field ()
för säkerhet? Synd, din kod kommer aldrig att fungera.
Sanitize och spara fältvärdena: Ja. För att få formuläret att lagra data måste du använda en annan funktion för att kontrollera en massa saker, sanera data och spara värdena i din anpassade metabox. Och du måste koppla den funktionen till spara inlägget
verkan. Propert.
Om du vill göra det "kärnvägen" och spendera timmar på att skapa ett par metaboxar, bra, bra för dig, ta den höga vägen. Men det kan naturligtvis komma en tid att du bara inte kommer att kunna använda hjälpramar som CMB2. I det fallet kan du referera till denna SitePoint-handledning av Narayan Prusty eller den här omfattande serien av handledningar av Tom McFarlin på Tuts + Code.
Och vad om jag berättade att du kan skapa anpassade metaboxer genom att skapa en funktion som hakar till en åtgärd och använder mycket smarta funktioner som gör allt det svåra arbetet med att skapa HTML och binda allt ihop med varandra? Och tro mig, jag överdriver inte ens en liten bit!
Med hjälp av CMB2 kommer du att kunna skapa anpassade metaboxer på en bråkdel av tiden du skulle spendera på att göra det "kärnan".
CMB2 finns i två former: i pluginformen och i ramformen. Om du ska använda CMB2 i projekt som inte kommer att släppas till en community, föreslår jag att du använder plugin-programmet, eftersom uppdatering av CMB2-plugin skulle vara mycket enklare och du behöver inte inkludera filerna av CMB2-motorn. Men om du ska släppa ditt projekt till ett samhälle, kan du bättre integrera CMB2 i projektet genom att ladda ner filerna från GitHub, placera dem i projektets mapp och använda linjerna nedan:
Naturligtvis, kom ihåg att du måste redigera raderna ovan för att peka på CMB2: s init.php
fil.
Innan vi skapar vår första metabox behöver vi skapa vår enda funktion som kommer att koppla till CMB2: s egna cmb2_init
verkan:
Därefter är skapandet av metabox lika enkelt som att skapa en ny variabel:
'test_metabox', 'title' => 'Test Metabox', 'object_types' => array ('sida', 'post', 'customposttype'), // posttyp 'context' => 'normal' normal "," avancerad "eller" sida "prioritet" => "hög", // "hög", "kärna", "standard" eller "låg" show_names '=> true, // visa fältnamn till vänster' cmb_styles '=> false, // false för att inaktivera CMB stylesheet' closed '=> true, // håll metaboxen stängd som standard)); ?>
Efter att ha skapat vår första anpassade metabox är det dags att göra det användbart genom att fylla i det med "fält" som CMB2 tillhandahåller. Och det är så enkelt att köra en funktion med metaboxvariabeln som vi just skapat:
add_field (array ('name' => 'Test Title', 'desc' => 'Detta är en titelbeskrivning', 'type' => 'title', 'id' => 'wiki_test_title')); // email input $ cmb-> add_field (array ('namn' => 'Test Text Email', 'id' => 'wiki_test_email', 'typ' => 'text_email')); // filuppladdare $ cmb-> add_field (array ('name' => 'Testfil', 'desc' => 'Ladda upp en bild eller skriv in en URL.', 'id' => 'wiki_test_image', 'typ' => 'file', // Göm inte textinmatningen för url: 'options' => array ('url' => false,),)); // kom ihåg när jag sa att en färgplockare skulle vara super svår när man använde kärnfunktioner? $ cmb-> add_field (array ('name' => 'Testa färgväljaren', 'id' => 'wiki_test_colorpicker', 'typ' => 'colorpicker', 'default' => '#ffffff')); ?>
Det finns mer än 30 fälttyper som tillhandahålls av CMB2, inklusive vanliga textinmatningar, WYSIWYG-redaktörer, datumplockare, färgplockare, filuppladdare och till och med taxonomisväljare. För en fullständig lista med fälttyper, kolla in denna Wiki-sida av CMB2.
Att skapa fullt fungerande anpassade metaboxar är fantastisk som det är, men CMB2 slutar inte där. Det finns en massa saker som du kan göra med CMB2:
show_on
filtrera och visa eller dölja dina metaboxer skickligt.För att lära mer om CMB2s supermakter som dessa finns det några sidor som du kan kolla på:
Det finns ingen förnekande som klibbar sig på WordPress-kärnan, men byggandet av saker är inte alltid så enkelt som det låter. Så, med hjälp av hjälpramar som CMB2 kommer vi att påskynda våra utvecklingsprocesser. Och jag tror att även om CMB2 är lika fantastisk som det är nu, har det mycket mer utrymme att förbättra (inte bara i anpassade metaboxer, men också i andra riktningar), så jag skulle hålla ett öga på det här Projekt om jag var du.
Vi ses i nästa del där vi ska gå över WP-CLI, ett enstaka WordPress-verktyg som ger oss möjlighet att hantera våra WordPress-installationer via kommandoraden.