
🛠 Kuidas lisada WordPressis meta-kaste CMB2-ga: täielik juhend
Standard WordPressi väljadest piisab kuni esimese eriprojektini. Sel hetkel, kui on vaja kuvada toote omadusi kaardil, lisada lehele galerii või lisada tarneinfo plokk, põrkad toimetaja piirangute vastu: pealkiri, tekst, kategooriad ja kõik.
Väljapääs on olemas ja see ei ole ACF Pro hinnaga 149 dollarit aastas. Kohandatud meta-kastid lisavad suvalisi välju otse postituse redigeerimisliidesesse ilma visuaalse ehitaja ja tosina üleliigse moodulita. CMB2 teeb just seda: pakub PHP API-t meta-kastide kirjeldamiseks koodis, mis elab versioonihalduses, mitte andmebaasis.
Allpool on täielik töövoog: alates pluginast kuni andmete kuvamiseni esiküljel. Artikli lõpuks on sul töötav meta-kasti fail, mis kohandub iga sisutüübiga alates lehtedest kuni WooCommerce'i toodeteni.
💡 Kiirülevaade:
- Paigalda CMB2 WordPressi.org kataloogist: plugin on tasuta ja paigaldub kahe klõpsuga.
- Loo oma teema kausta fail
metaboxes.phpja kirjelda vajalikud väljadcmb2_admin_initkonksu kaudu. - Lisa fail
functions.php-sse üherequire_oncereaga ja kontrolli meta-kasti admin-paneelis. - Kuva salvestatud andmed esiküljel
get_post_meta()abil koos korrektse escapimisega.
Mis on CMB2: kood visuaalse ehitaja asemel
CMB2 on arendaja teek, mis loob WordPressis meta-kaste, kohandatud välju ja vorme. Kohe karbist välja toetab see kümneid väljatüüpe: tekst, WYSIWYG-redaktor, faili üleslaadimine, kuupäevavalija, värvivalija, raadionupud, rippmenüüd, korduvad väljad ja grupid.
Peamine erinevus ACF-ist: CMB2-l puudub visuaalne ehitaja. Kõik meta-kastid kirjeldatakse PHP-failides sinu teema sees. Arendajatele on see pluss: konfiguratsioon elab Git-is, seda ei saa kogemata läbi admin-paneeli kustutada ja migratsioon testkeskkonna ja toodangu vahel taandub koodi juurutamisele. Samas on CMB2 täiesti tasuta, samas kui ACF Pro maksab korduvate väljade ja gruppide eest umbes 149 dollarit aastas.
Teeki on aktiivselt hooldatud alates 2014. aastast. WordPress.org-is on plugin 5-tärnise reitinguga ja üle 300 000 aktiivse paigaldusega. GitHubi repositoorium saab regulaarseid uuendusi: viimane väljalase käsitles ühilduvust PHP 8.4 ja WordPress 6.7-ga. See ei ole mahajäetud projekt, mis poole aasta pärast kasutusest kõrvaldatakse.
1. Samm: paigalda plugin
Mine Plugins → Add New, trüki otsingukasti "CMB2" ja klõpsa "Install". Pärast aktiveerimist laeb plugin oma mootori, kuid ei muuda ise admin-paneelis midagi: meta-kastid ilmuvad alles pärast seda, kui oled need koodis kirjeldanud.

Kui lisad CMB2 käsitsi oma teema sisse ilma seda läbi admin-paneeli paigaldamata, lisa functions.php algusesse järgmine:
1 require_once __DIR__ . '/cmb2/init.php';
Kaks olulist punkti. Esiteks: init.php peaks laadima nii vara kui võimalik, väljaspool ühtegi konksu. Ära mähi seda if ( ! class_exists(... kontrollidesse; CMB2 lahendab topeltlaadimise konfliktid ise. Teiseks: käsitsi lisamise korral pead CMB2 käsitsi uuendama, erinevalt automaatsetest uuendustest läbi admin-paneeli.
2. Samm: kirjuta meta-kasti fail
Loo oma alamteema juurkausta kaust cmb2-metaboxes ja sinna sisse fail metaboxes.php. See fail sisaldab kõiki sinu välja definitsioone.
Allpool on töötav kood, mis lisab WooCommerce'i toodetele tekstiredaktori, lühikirjelduse ja märgise valija. Kopeeri see metaboxes.php-sse:
1 add_action( 'cmb2_admin_init', 'sdstudio_register_metaboxes' ); 2 3 function sdstudio_register_metaboxes() { 4 5 $prefix = '_sdstudio_'; 6 7 $cmb = new_cmb2_box( array( 8 'id' => 'product_extra_info', 9 'title' => __( 'Дополнительная информация о товаре', 'cmb2' ), 10 'object_types' => array( 'product' ), 11 'context' => 'normal', 12 'priority' => 'high', 13 'show_names' => true, 14 ) ); 15 16 $cmb->add_field( array( 17 'name' => __( 'Описание для карусели на главной', 'cmb2' ), 18 'desc' => __( 'Текст, который будет показан в слайдере товаров.', 'cmb2' ), 19 'id' => $prefix . 'carousel_desc', 20 'type' => 'wysiwyg', 21 'options' => array( 22 'textarea_rows' => 5, 23 ), 24 ) ); 25 26 $cmb->add_field( array( 27 'name' => __( 'Короткое описание', 'cmb2' ), 28 'desc' => __( 'Одна строка — для карточки товара в сетке.', 'cmb2' ), 29 'id' => $prefix . 'short_desc', 30 'type' => 'textarea_small', 31 ) ); 32 33 $cmb->add_field( array( 34 'name' => __( 'Бейдж товара', 'cmb2' ), 35 'desc' => __( 'Метка «Новинка», «Хит» или «Распродажа».', 'cmb2' ), 36 'id' => $prefix . 'badge', 37 'type' => 'select', 38 'show_option_none' => true, 39 'options' => array( 40 'new' => __( 'Новинка', 'cmb2' ), 41 'hit' => __( 'Хит', 'cmb2' ), 42 'sale' => __( 'Распродажа', 'cmb2' ), 43 ), 44 ) ); 45 46 }
Mis siin toimub: cmb2_admin_init konks käivitub, kui admin-paneel laeb, ja registreerib meta-kasti toote redigeerimise lehel. new_cmb2_box() loob konteineri pealkirjaga "Toote lisainfo" ja kolm add_field() väljakutset lisavad sinna väljad: WYSIWYG-redaktori, kompaktse tekstivälja ja rippmenüü eelseadistatud valikutega. Iga väli saab kordumatu id koos _sdstudio_ prefiksiga, et vältida konflikte teiste pluginatega.

Kui vajad WooCommerce'i asemel tavalisi lehti, asenda 'object_types' => array( 'product' ) reaga 'object_types' => array( 'page' ). Mitme sisutüübi puhul loetle need: array( 'page', 'post' ).
Väljatüüpide täieliku nimekirja leiad ametlikust CMB2 dokumentatsioonist GitHubis. Karbist välja on saadaval kümneid valikuid: alates lihttekstist ja WYSIWYG-redaktoritest kuni failide üleslaadimise, värvivalijate, raadionuppude ja taksonoomiateni. Vali oma konkreetse ülesande jaoks õige tüüp dokumentatsiooni, mitte oletuste põhjal.
3. Samm: lisa see faili functions.php
Nüüd pead laadima loodud faili. Ava oma alamteema functions.php ja lisa üks rida enne sulgevat ?> silti või faili lõppu, kui sulgevat silti pole:
1 require_once __DIR__ . '/cmb2-metaboxes/metaboxes.php';
Enne koodi lisamist tee functions.php-st varukoopia. Süntaksiviga require_once-s põhjustab saidi kokkujooksmise fataalse PHP veaga ja faili saad taastada ainult FTP või hostingu paneeli kaudu. Pärast salvestamist ava admin-paneelis mõni toode ja veendu, et sisuredaktori all kuvatakse meta-kast "Toote lisainfo".
Täida testväljad ja klõpsa "Update". CMB2 salvestab andmed automaatselt wp_postmeta tabelisse. Täiendavaid save_post konksu väljakutseid pole vaja: teek püüab postituse salvestamise kinni ja töötleb oma väljad ise.
4. Samm: kuva andmed esiküljel
Andmed on andmebaasi salvestatud; nüüd pead need külastajatele näitama. Ava tootelehe eest vastutav teemafail, tavaliselt single-product.php või content-single-product.php. Lisa kood WordPressi tsükli sisse:
1 <?php 2 $carousel_desc = get_post_meta( get_the_ID(), '_sdstudio_carousel_desc', true ); 3 $badge = get_post_meta( get_the_ID(), '_sdstudio_badge', true ); 4 5 if ( ! empty( $carousel_desc ) ) : ?> 6 <div class="product-carousel-desc"> 7 <?php echo wp_kses_post( $carousel_desc ); ?> 8 </div> 9 <?php endif; ?> 10 11 <?php if ( ! empty( $badge ) ) : ?> 12 <span class="product-badge product-badge--<?php echo esc_attr( $badge ); ?>"> 13 <?php echo esc_html( $badge ); ?> 14 </span> 15 <?php endif; ?> 16
Analüüs: get_post_meta() hangib väärtuse välja ID järgi. WYSIWYG-välja puhul kasuta wp_kses_post(), mis lubab lubatud HTML-sildid ja filtreerib potentsiaalselt ohtlikud. Lihtteksti või valiku puhul piisab esc_html()-st: see teisendab erimärgid HTML-entiteetideks ja hoiab ära XSS-i.
Kui meta-kast on loodud lehtede jaoks ('object_types' => array( 'page' )), paiguta see sama kood faili page.php või content-page.php. Mehhanism on sama: get_post_meta() tsükli sees, escapimine sõltuvalt välja tüübist.
Video: CMB2 paigaldusest töötava meta-kastini
Selles 20-minutilises õpetuses juhendab autor läbi kogu töövoo: paigaldamine, väljade loomine, faili lisamine ja andmete kuvamine esiküljel. Kasulik vaadata, kui tekstijuhised jätsid lüngad.
⁉️🤔 Korduma kippuvad küsimused
Mille poolest erineb CMB2 ACF-ist?
ACF pakub visuaalset väljade ehitajat otse admin-paneelis: meta-kasti saab kokku panna ilma ühtegi koodirida kirjutamata. CMB2 nõuab väljade kirjeldamist PHP-failides sinu teema sees. Arendajatele, kes hoiavad konfiguratsiooni Git-is, on CMB2 mugavam: meta-kastid ei sõltu andmebaasi seisundist, neid ei saa kogemata läbi admin-paneeli kustutada ja migratsioon testkeskkonna ja toodangu vahel taandub koodi juurutamisele. ACF Pro maksab alates 149 dollarist aastas korduvate väljade ja gruppide eest; CMB2 on tasuta.
Kas CMB2 saab kasutada ilma pluginat paigaldamata?
Jah. Kopeeri CMB2 kaust oma teema sisse ja lisa
init.phpfailifunctions.php, nagu näidatud 1. sammus. See lähenemine on mugav premium-teemade puhul, mis peaksid töötama kohe pärast aktiveerimist, ilma et kasutaja peaks paigaldama kolmanda osapoole pluginat. Miinus: pead CMB2 iga uue versiooniga käsitsi uuendama.
Kas CMB2 väljad töötavad Gutenbergi redaktoris?
Jah, CMB2 meta-kastid kuvatakse Gutenbergi redaktori all tuttaval viisil, sisu all olevas sektsioonis. Kuid karbist välja ei integreeru need redaktori plokkidesse. Kui on vaja väli otse plokki manustada, on vaja täiendavat arendust CMB2 API ja
register_block_type()kaudu.
Mida teha, kui meta-kasti admin-paneelis ei kuvata?
Kontrolli kolme asja. Esiteks: kas
object_typesvastab redigeeritava postituse tüübile? WooCommerce'i toodete puhul on vaja'product', mitte'post'. Teiseks: kas esineb PHP süntaksiviga? LubaWP_DEBUGfailiswp-config.phpja kontrolli logi. Kolmandaks: kas väljaidprefiks on konfliktis mõne teise pluginaga? Kasuta unikaalset prefiksit nagu_sdstudio_.
Kas ma saan luua korduvaid väljagruppe?
Jah. CMB2 toetab korduvaid välju lipu
'repeatable' => truekaudu ja korduvaid gruppe$cmb->add_group_field()kaudu. Grupp võimaldab lisada ploki "Omadus: väärtus" ja luua uusi eksemplare nupuga "Lisa rida" otse admin-paneelis.
Kas CMB2 töötab multisite'iga?
Jah, plugin on täielikult ühilduv WordPress Multisite'iga. Meta-kaste saab registreerida globaalselt aktiivse võrguteema
functions.php-s või individuaalselt iga saidi jaoks.get_post_meta()väljakutse töötab mõlemas režiimis samamoodi.
CMB2 või ACF: millist lähenemist oma ülesande jaoks valida
CMB2 lahendab täpselt ühe ülesande: kohandatud meta-kastide loomise koodi kaudu, kus konfiguratsioon on salvestatud teemafailidesse, mitte andmebaasi. Valik taandub sinu töövoole, mitte abstraktsele "kumb on parem".
Kui oled arendaja ja hoiad kogu projekti konfiguratsiooni Git-is, vali CMB2. Meta-kastid elavad failis
metaboxes.php, juurutatakse koos teemaga ega vaja andmebaasi sünkroniseerimist testkeskkonna ja toodangu vahel.Kui vajad visuaalset ehitajat, korduvaid paindlikke välju ja valmis Gutenbergi plokke ilma koodi kirjutamata, vali ACF Pro. Tellimus alates 149 dollarist aastas tasub end ära prototüüpimise kiiruses.
Kui sinu projekt juba kasutab CMB2 ja meta-kastid töötavad usaldusväärselt, jää selle juurde. Teek ei ole mahajäetud, ei vaja kiiret migratsiooni ja saab regulaarselt ühilduvusuuendusi.
Proovi mõlemat lähenemist testsaidil: ehita sama meta-kast nii CMB2-s kui ka ACF-is. Lähenemise erinevus saab selgeks 20 minutiga. Millist tööriista sina kasutad? Jaga kommentaarides.



