MB Blocks
Mi ez és milyen problémát old meg?
Az MB Blocks a Meta Box ökoszisztéma prémium kiterjesztése, amellyel egyedi Gutenberg blokkokat készíthetsz kizárólag PHP‑val. Nem kell Reactot, Webpacket vagy Bablet beállítanod: a megszokott Meta Box mezőszintaxist használod, és percek alatt felépítesz professzionális blokkokat. Támogatja a block.json alapú regisztrációt és teljesen kompatibilis a Full Site Editinggel, így a blokkok sablonokban és sablonrészekben is működnek.
A bővítmény lecsökkenti a Gutenberg fejlesztés belépési küszöbét, újrahasznosítja a már meglévő meződefinícióidat, és egységes, élő előnézetet ad a szerkesztőben – mindezt rugalmas adattárolással és fejlesztőbarát segédfunkciókkal.
Fő funkciók és mit jelentenek a gyakorlatban
- PHP‑alapú blokkfejlesztés: Blokkot hozol létre úgy, mintha egy mezőcsoportot definiálnál; a típus egyszerűen „block”. Nincs build‑lánc, nincs JS fordítás.
- block.json támogatás: A blokkokat WordPress‑szabvány szerint regisztrálhatod. A szokásos kulcsokkal (például editorStyle, style, editorScript, script, viewStyle, viewScript) pontosan szabályozod, mi töltődjön be az editorban és a frontenden.
- FSE kompatibilitás: A blokkok site szerkesztőben és sablonokban is gond nélkül használhatók; ideális site‑wide komponensekhez.
- Élő előnézet: Mezőérték módosításkor a blokk azonnal újrarenderelődik. Látod, mit kap a szerző – nincs „preview” körhinta.
- Meta Box mezőtípusok teljes támogatása: 40+ mezőtípus, ugyanaz a beállítási logika, mint a klasszikus field groupoknál. Amit már ismersz, azt viszed tovább blokkokba.
- InnerBlocks támogatás: Beágyazott blokkokat adhatsz a sajátodhoz, szabályozva az engedélyezett típusokat, sablont és zárolást. A bővítmény gondoskodik arról, hogy az editor és a frontend markupja egyezzen (ne legyenek felesleges wrap‑elemek).
- MB Views integráció: Sablonozz Twiggel; a blokkot egy view‑val rendereltetheted, így a markup és a logika még tisztábban szétválik.
- MB Builder integráció: Vizuális felületen rakod össze a blokk mezőit és beállításait – ideális csapatoknak és gyors prototípushoz.
- Stílusok és scriptek kezelése: Külön kezeli az editorra és a frontend‑nézetre vonatkozó CSS/JS‑t. PHP regisztrációnál enqueue_* paraméterekkel, block.json‑nal a megfelelő kulcsokkal dolgozol.
- Segédfüggvények és automatikus adatelőkészítés: A render callbackben kapott $attributes már előkészített értékeket tartalmaz. Sablonban a mb_get_block_field() és mb_the_block_field() segít az értékek kiolvasásában.
- Rugalmas adattárolás: Alapból a blokk attribútumaiban tárol (JSON), de dönthetsz post meta vagy egyedi tábla mellett is – nagy adatmennyiségnél különösen hasznos.
- Kiegészítő beállítások: Ikon (Dashicons, SVG, Font Awesome), kategória, kulcsszavak, supports (align, customClassName, multiple, reusable, lock, anchor), context és saját CSS osztályok.
Hogyan működik? (gyors áttekintés)
-
Definiálás
– Block.json‑nal regisztrálsz és megadod az asseteket, vagy
– PHP‑ban hozod létre a blokkot és a mezőit az rwmb_meta_boxes hookkal. -
Renderelés
– PHP sablonfájllal (render vagy render_template), vagy
– MB Views‑szal (Twig), ha sablonozni szeretnél. -
Stílus/JS
– Block.json kulcsokkal, illetve PHP‑s regisztrációnál enqueue opciókkal külön az editorhoz és a frontendhez.
Minimális PHP példa
add_filter('rwmb_meta_boxes', function ($meta_boxes) {
$meta_boxes[] = [
'type' => 'block',
'id' => 'hero',
'title' => 'Hero szekció',
'icon' => 'slides',
'supports' => [
'align' => ['full', 'wide'],
'anchor' => true,
],
'render_template' => get_theme_file_path('blocks/hero.php'),
'fields' => [
['id' => 'heading', 'name' => 'Címsor', 'type' => 'text'],
['id' => 'subtitle', 'name' => 'Alcím', 'type' => 'textarea'],
['id' => 'bg', 'name' => 'Háttérkép','type' => 'image_advanced'],
],
// 'inner_blocks' => [
// 'allowedBlocks' => ['core/buttons'],
// 'templateLock' => 'all',
// ],
];
return $meta_boxes;
});
// blocks/hero.php
<?php
$heading = mb_get_block_field('heading');
$subtitle = mb_get_block_field('subtitle');
$bg = mb_get_block_field('bg'); // kép tömb URI‑val
?>
<section class="hero" style="background-image:url('<?php echo esc_url($bg[0]['url'] ?? ''); ?>')">
<h1><?php echo esc_html($heading); ?></h1>
<?php if ($subtitle) : ?>
<p class="hero__subtitle"><?php echo esc_html($subtitle); ?></p>
<?php endif; ?>
<?php echo $content; // InnerBlocks tartalom (ha engedélyezett) ?>
</section>
Megjegyzés: ha post meta‑ba vagy egyedi táblába mentesz, az automatikus attribútum‑előkészítés és a mb_get_block_field() nem elérhető; ilyenkor rwmb_meta‑val kérdezd le az adatot.
Konkrét használati esetek
- Hero/CTA blokkok: címsor, leírás, háttérkép, gombok – szerkesztőben azonnali előnézettel.
- Feature lista / testimonial: ismétlődő mezők, képek, ikonkészletek.
- Adatvezérelt komponensek: termékkiemelés, kapcsolódó bejegyzések, taxonómia‑szűrt listák.
- FSE komponensek: egységes header, footer, promo sáv – sablonrészekbe illesztve.
Előnyök és értékajánlat
- Időmegtakarítás: nincs build‑lánc, nincs JS tooling – csak PHP és a már ismert Meta Box mezők.
- Kisebb kockázat: WordPress‑szabványos block.json és FSE támogatás, jövőálló megközelítés.
- Skálázhatóság: rugalmas adattárolás post meta‑ban vagy egyedi táblában nagy projekteknél.
- Gyors fejlesztői feedback: élő előnézet és egységes editor/frontend markup.
Kinek ajánlott?
- WordPress fejlesztőknek és ügynökségeknek, akik gyorsan, megbízhatóan akarnak Gutenberg blokkokat szállítani JS stack nélkül.
- PHP‑fókuszú csapatoknak, akik már Meta Boxot használnak, és újrahasznosítanák mezőcsoportjaikat.
- Tartalomkészítő csapatoknak, akik konzisztens, FSE‑kompatibilis komponenseket szeretnének, élő előnézettel.
Fontos részletek és korlátozások
- Foglalt attribútumnevek: kerüld az „id” és „name” használatát mezőazonosítóként; a blokk belső értékeit felülírhatják.
- Azonosító szintaxis: a blokk‑ID csak kisbetűt, számot és kötőjelet tartalmazhat (aláhúzás nélkül).
- Többszörözhetőség és mentés: ha post meta‑ba vagy egyedi táblába mentesz, javasolt a multiple tiltása, hogy ne legyen ütközés.
- Adatlekérés: meta/custom table tárolásnál rwmb_meta‑t használj; az automatikus attribútum‑előkészítés és a mb_get_block_field() ilyenkor nem aktív.
- Függőség: az MB Blocks a Meta Box kiterjesztése; a teljes élményhez szükséges a fő bővítmény, opcionálisan az MB Builder és az MB Views.
Ezzel a bővítménnyel pontosan azt kapod, amire a mindennapi fejlesztésben szükséged van: gyors, PHP‑centrikus blokkfejlesztést, amely azonnal illeszkedik a WordPress és a Meta Box bevált folyamataihoz.