Verktøykasse av Smart WordPress Utvikler CMB2

Har du noen gang prøvd å bygge metaboxer i WordPress? Det er et rot, ikke bare for nybegynnere, men også for avanserte WordPress-utviklere. Heldigvis for WordPress-fellesskapet, kan samfunnet selv komme opp med elegante løsninger for slike rotete problemer. CMB2 er en av dem.

I denne delen av "Toolbox of the Smart WordPress Developer" -serien skal vi gå gjennom CMB2, et omfattende bibliotek for å utvikle tilpassede metaboxer og skjemaer i WordPress.

Den ekstremt uakseptable måten å lage tilpassede metaboxer

Siden dette ikke er en veiledning om å skape tilpassede metaboxer, skal jeg ikke lære deg hvordan du gjør det ved å bruke kjernefunksjonalitet, men jeg vil gi ut et par nyttige lenker. I stedet skal jeg gå over den verdslige rutinen av den:

Opprette metabox: Ganske vist bruker denne delens viktige og jevne CMB2 en lignende måte å gjøre det på. Du må opprette den tilpassede metaboxen ved hjelp av add_meta_box () funksjon ... innen en funksjon som hakker til add_meta_boxes handling. Ikke for lett, ikke for hardt, men mellom de to.

Opprett feltene som skal vises i metaboxen: I denne delen må du opprette en egen funksjon (som du også må referere til i add_meta_box () funksjon) og skriv vanilla HTML i den, som divs og merkelapps og inngangs, for å vise skjemafeltene dine, som ikke vil fungere med mindre du binder HTML med komplisert PHP. Tekstinngangene er fine, men å lage dropdowns eller avkrysningsboksene? Forbered deg på å bli forvirret. (Ikke engang få meg til å starte på filopplastinger og fargeplukkere.) Åh, du glemte å bruke wp_nonce_field () for sikkerhet? Synd, koden din vil aldri fungere.

Sanitize og lagre feltverdiene: Yeah. For å få skjemaet til å lagre dataene, må du bruke enda en funksjon for å kontrollere en masse ting, sanitere dataene og lagre verdiene i din tilpassede metaboks. Og du må koble den funksjonen til lagre post handling. Ryddig.

Hvis du vil gjøre det "kjernen" og bruke timer på å lage et par metaboxer, vel, bra for deg, ta den høye veien. Men selvfølgelig kan det komme en tid at du bare ikke vil kunne bruke hjelpesammensetninger som CMB2. I så fall kan du referere til denne SitePoint-opplæringen av Narayan Prusty eller denne omfattende serien av opplæringsprogrammer av Tom McFarlin på Tuts + Code.

Skriv inn CMB2: Den usedvanlig fantastiske måten å lage tilpassede metaboxer

Og hva om jeg fortalte deg at du kan opprette egendefinerte metaboxer ved å skape en funksjon som knytter til en handling, og bruker svært smarte funksjoner som gjør alt det harde arbeidet med å lage HTML og bindes sammen alt sammen? Og tro meg, jeg overdriver ikke en liten bit!

Ved hjelp av CMB2, vil du kunne lage tilpassede metaboxer i en brøkdel av tiden du vil bruke på å gjøre det "kjernen".

Sette opp CMB2

CMB2 kommer i to former: i plugin form og i rammen form. Hvis du skal bruke CMB2 i prosjekter som ikke kommer til å bli utgitt for et fellesskap, foreslår jeg at du bruker plugin-modulen, fordi oppdateringen av CMB2-pluginet ville være mye enklere, og du trenger ikke å inkludere filene av CMB2-motoren. Men hvis du skal slippe prosjektet ditt til et fellesskap, kan du bedre integrere CMB2 i prosjektet ved å laste ned filene fra GitHub, plassere dem i prosjektets mappe og bruke linjene nedenfor i det:

Selvfølgelig, husk at du må redigere linjene over for å peke på CMB2 init.php fil.

Opprette din første tilpassede metaboks

Før du lager vår første metabox, må vi opprette vår eneste funksjon som vil koble til CMB2s egen cmb2_init handling:

Etter det er å lage metabox like enkelt som å skape en ny variabel:

 'test_metabox', 'title' => 'Test Metabox', 'object_types' => array ('side', 'innlegg', 'customposttype'), // posttype 'context' => 'normal', // ' normal ',' avansert 'eller' side 'prioritet' => 'høy', // 'høy', 'kjerne', 'standard' eller 'lavt' show_names '=> true, // vis feltnavn til venstre' cmb_styles '=> false, // false for å deaktivere CMB stilarket' closed '=> true, // holde metabox lukket som standard)); ?>

Populere din tilpassede metaboks med felt

Etter å ha opprettet vår første tilpassede metabox, er det på tide å gjøre det nyttig ved å fylle det med "felt" som CMB2 gir. Og det er så enkelt som å kjøre en funksjon med metaboxvariabelen vi nettopp har opprettet:

add_field (array ('name' => 'Test Title', 'desc' => 'Dette er en tittelbeskrivelse', 'type' => 'title', 'id' => 'wiki_test_title')); // email input $ cmb-> add_field (array ('navn' => 'Test tekst e-post', 'id' => 'wiki_test_email', 'type' => 'text_email',))); // filopploader $ cmb-> add_field (array ('name' => 'Testfil', 'desc' => 'Last opp et bilde eller skriv inn en URL.', 'id' => 'wiki_test_image', 'type' => 'fil', // Skjul tekstinngangen for url: 'options' => array ('url' => false,),))); // husker da jeg sa at å gjøre en fargeplukker ville være super vanskelig når du bruker kjernefunksjoner? $ cmb-> add_field (array ('name' => 'Test Color Picker', 'id' => 'wiki_test_colorpicker', 'type' => 'colorpicker', 'default' => '#ffffff')); ?>

Det finnes mer enn 30 felttyper levert av CMB2, inkludert vanlige tekstinnspillinger, WYSIWYG-redaktører, datovalgere, fargeplukkere, filopploadere og til og med taksonomivelgerere. For en fullstendig liste over felttyper, sjekk ut denne Wiki-siden av CMB2.

Enda mer Awesomeness

Å skape fullt fungerende tilpassede metaboxer er fantastisk som det er, men CMB2 stopper ikke der. Det er en rekke ting du kan gjøre med CMB2:

  • Du kan bruke CMB2 til å lage en valgside for temaet ditt.
  • Du kan gjøre CMB2 til å skape innleggingsskjemaer.
  • Du kan legge til din egen show_on filtrere og betinget vise eller skjul metaboxene dine.
  • Og du kan til og med lage dine egne felttyper.

For å lære mer om CMB2s supermakter som disse, er det noen få sider du kan sjekke ut:

  • Tredjeparts ressurser for CMB2
  • "Tips og triks" -siden på CMB2 Wiki
  • CMB2 Utdragsbibliotek, en side som inneholder noen veldig nyttige kodestykker
  • Bloggen til WebDevStudios, skapere av CMB2

Wrapping Up for Today

Det er ingen benektelse som stikker til WordPress-kjernen, mens det å bygge ting ikke alltid er så enkelt som det høres ut. Så, ved hjelp av hjelperammer som CMB2, vil vi påskynde utviklingsprosessene våre. Og jeg tror at selv om CMB2 er like fantastisk som det er nå, har det mye mer plass til å forbedre (ikke bare innenfor tilpassede metaboxer, men også i andre retninger), så jeg vil holde øye med dette Prosjekt hvis jeg var deg.

Vi ser deg i neste del der vi skal gå over WP-CLI, et enestående WordPress-verktøy som gir oss muligheten til å administrere våre WordPress-installasjoner via kommandolinjen.