MB Custom Table
Mi ez és mit old meg?
Az MB Custom Table a Meta Box prémium bővítménye, amellyel a Meta Box-szal létrehozott egyedi mezőket nem a WordPress alap meta tábláiba, hanem saját, sémázott adatbázis-táblákba mentheted. Minden entitás (bejegyzés, felhasználó, taxonómia, komment) egy sor, és minden mező külön oszlop. Ezzel drasztikusan csökkented a sorok számát, gyorsabbak lesznek a lekérdezések, és átláthatóbbá válik a riportolás/import-export.
Hogyan működik röviden?
- Az oszlopnevek megegyeznek a mezők azonosítóival.
- Az ID oszlopot a bővítmény kezeli (primer kulcs), és összekapcsolja a WP entitásokkal.
- Csoport (group) mezők felső szintű ID-ja egy oszlop, értéke szerializált tömb.
- A tábla létrehozása a WordPress ajánlott dbDelta mechanizmusával történik, így a séma biztonságosan frissíthető.
- A mezőlekérdezések cache-elve vannak az adott objektumon belül.
Fő funkciók, érthetően
- Egyedi táblákba mentés: Az összes meződ tárgyanként egy sorban, mezőnként egy oszlopban tárolódik. Ez kevesebb JOIN-t és gyorsabb WHERE feltételeket jelent.
- Teljes meta-típus támogatás: Bejegyzés-, felhasználó-, taxonómia- és komment-meta mentése ugyanazzal a logikával.
- UI-alapú beállítás: Az MB Builderben csak bekapcsolod a „Custom table” opciót; kérésre a tábla automatikusan létrejön (alapból TEXT oszlopokkal).
- Fejlesztői API: Táblák programozott létrehozása (pontos típusokkal és indexekkel), illetve adatműveletek (exists, get, add, update, delete).
- WordPress-kompatibilis sémakezelés: dbDelta-val idempotens, verziózható sémafrissítés.
- Custom Models: Olyan önálló „modellek”, amelyek a teljes adatot egy saját táblában tartják, és admin CRUD felületet kínálnak, posztstruktúra nélkül.
- Integrációk: Admin listanézeti oszlopok (MB Admin Columns), valamint keresés a custom táblák tartalmában megfelelő keresőintegrációval.
Gyakorlati példák
- Nagy rendelési adatbázis: 40+ mező rendelésenként – meta táblában ez sok tízezer sor, egyedi táblában viszont soronként rendezett, indexelhető mezők.
- Katalógus/ingatlan/CRM: Gyakori szűrés mezőértékekre (pl. státusz, ár, kategória) – gyors WHERE feltételek és indexek.
- Riportolás és export: Minden adat egy táblában, oszlopokban – egyszerű CSV/BI export.
- Custom Models: Nincs szükséged permalinkre/archívumra, de kell admin CRUD és sémázott tárolás – kezeld „üzleti entitásként”.
Gyors indulás
UI-val (MB Builder)
- Nyisd meg a Meta Box > Custom Fields nézetet, szerkeszd a mezőcsoportot.
- A Settings fülön kapcsold be a „Custom table”-t, add meg a tábla nevét.
- Opcionálisan kapcsold be az „Auto create table”-t (alapból TEXT oszlopok).
Kóddal (típusok és indexek fölött teljes kontroll)
use MetaBox\CustomTable\API as MBCT;
add_action( 'init', function() {
MBCT::create( 'wp_my_orders', [
'status' => 'VARCHAR(20)',
'amount' => 'BIGINT',
'notes' => 'TEXT',
], [ 'status' ] );
} );
// Mezőcsoport (részlet)
return [
'id' => 'order_fields',
'storage_type' => 'custom_table',
'table' => 'wp_my_orders',
'fields' => [
[ 'id' => 'status', 'type' => 'select', 'options' => [ 'new' => 'Új', 'completed' => 'Kész' ] ],
[ 'id' => 'amount', 'type' => 'number' ],
[ 'id' => 'notes', 'type' => 'textarea' ],
],
];
Lekérdezések és kompatibilitás
- WP_Query: A meta_query nem működik a custom táblára. Előbb SQL-lel gyűjtsd az ID-kat, majd WP_Query-ben használd a post__in-t:
global $wpdb;
$ids = $wpdb->get_col( "SELECT ID FROM wp_my_orders WHERE status = 'completed'" );
$q = new WP_Query( [ 'post__in' => $ids, 'orderby' => 'post__in' ] );
- Keresés: Keresőintegrációval a custom táblák tartalma (akár szerializált group-értékek is) kereshetővé tehető.
- Admin listanézet: Az admin oszlopok könnyen testreszabhatók; Custom Models esetén különösen hasznos.
Előnyök és értékajánlat
- Teljesítmény: Kevesebb rekord, kevesebb JOIN, indexelhető oszlopok – gyorsabb lekérdezések és admin felület.
- Átlátható adatmodell: Sémázott tárolás, könnyebb riportolás és migráció.
- Rugalmasság: UI a gyors beállításhoz, fejlesztői API a professzionális sématervezéshez.
- Jövőállóság: WordPress-ajánlott sémakezelés, idempotens frissítések.
Kinek ajánlott?
- Fejlesztőknek és ügynökségeknek, akik nagy mennyiségű egyedi mező-adattal dolgoznak.
- E-kereskedelmi, katalógus-, ingatlan- és CRM-projektekhez, ahol létfontosságú a gyors szűrés és riport.
- Olyan rendszerekhez, ahol a posztmeta-duzzadás már teljesítménygondot okoz, vagy célzott üzleti entitásokra van szükség (Custom Models).
Korlátok és fontos tudnivalók
- A WP_Query meta_* paraméterei nem működnek custom táblákra; külön SQL szükséges az ID-khoz.
- Group mezők értéke szerializált – nehézkes rá SQL-szintű szűrés; csak akkor használd, ha tényleg csoportos tárolás kell.
- Az automatikus tábla-létrehozás minden oszlopot TEXT-ként hoz létre; teljesítményhez definiálj célzott típusokat és indexeket kóddal.
- A Custom Models nem kap front-end sablont/permalinket; admin oldali adatkezelésre optimalizált.
Adatmigráció
Meglévő mezőid postmeta-ból áthelyezhetők egyedi táblába. Tipikus lépések:
- Kapcsold be a „Custom table”-t és állítsd be a táblát.
- Hozd létre/finomítsd a sémát (típusok, indexek).
- Írj migrációs rutint, amely az érintett postok ID-ján végigmegy, beolvassa a régi mezőket, és az új táblába menti őket.
Összegzés
Ha strukturált, gyors és skálázható tárolást szeretnél a Meta Box mezőidnek, az MB Custom Table a legjobb eszköz: egyszerre kapod meg a kényelmes UI-t, a fejlesztői kontrollt és a WordPress-kompatibilis sémakezelést. Tudatos sématervezéssel és a lekérdezési sajátosságok figyelembevételével jelentős teljesítmény- és kezelhetőségi előnyt nyersz.