Metaboxy – 3. Díl – Vlastní zpracování metaboxu

20.03.2015 | Tomáš Kocifaj

V předchozích dílech jsme si ukázali, jak snadno a rychle vytvořit metabox, jak do něj umístit prvky formuláře proto, abychom nějaká data ukládali a získávali tak informace od uživatele. Určitě jsou ale situace, kde bude potřeba do metaboxu předat pouze nějaké HMTL, které chceme uživateli vykreslit. I na tuto potřebu Framework myslí, my se na ní v dnešním dílu podíváme.

Jaké komponenty budeme potřebovat?

  1. KT Metabox – hlavní komponenta pro práci s metaboxy

/yours/requires/metaboxes/kt_fw_{post_type}_metabox.inc.php
post_type nahradíme typem post_typu, ke kterému metaboxy budou patřit.

Definice metaboxu s vlastní callback funkcí

Do našeho souboru kt_fw_test_page_metabox.inc.php  – který jsme si definovali v předchozích dílech – přidáme následující kód:

V rámci statické třídy na objektu KT_Metabox jsme využili funkci createCustom, která na rozdíl od ostatních provádí vytváření metaboxu s vlastní callback funkcí – ta bude volána v případě vykreslení právě daného metaboxu. Ostatní parametry jsou velmi podobné.

V případě, že zadáte callback funkci, která zatím nebyla definovaná, bude vyhozena běžná chyba! Custom metabox musí mít vždy callback funkci deklarovanou.

Callback funkce

Nyní vzniká otázka, kam bychom měli callback funkci pro náš metabox zapisovat. V případě, že máte těchto funkcí v rámci entity / nebo nastavení více, je dobré pro ně vyčlenit vlastní soubor. Například v našem případě bychom ho zapisovali do /yours/requiers/funcionts/kt_fw_test_page_metabox_functions.inc.php. Pokud se ale jedná o pár funkcí, které nemají složitou strukturu, můžeme je ponechat v našem souboru pro zápis metaboxu.

Pod naší definici metaboxu přidáme další část kódu.

Když si nyní obnovíme naší stránku, můžeme vidět náš nový metabox s obsahem, který jsme mu v rámci naší funkce určili vykreslit. V našem případě tedy jednu větu a poté obsah fieldsetu z našeho configu. Namísto vykreslení inputů jsme do formuláře data načetli a vykreslili je jako informativní tabulku. Je však ale na Vás, jaký obsah ve funkci vydefinujete.

meatbox-custom-callback-function

Tímto způsobem můžete kontrolovat obsah každého metaboxu, který chcete pro zobrazení dat používat. Je již plně na Vás, co do připraveného obsahu metaboxu připravíte, jaké data tam pošlete a necháte vykreslit.

Vlastní obsluha uložení dat

Občas určitě nastane situace, kdy potřebujete například zpracovat nějaké odeslané data z Vašeho formuláře a nechcete, aby byly součástí ostatních dat, které ukládá Framework dle definovaného tipu metaboxů. Například, budete chtít mít metabox, který v případě uložení provede nějakou operaci a Vy potřebujete vyčíst, co si uživatel „nastavil“.

Obecně máme dvě možnosti

  1. Provést zpracování přímo v callback funkci – zde ale musíme vědět, že operace nemusí být spuštěna předtím, než dojde k odeslání hlavičky do browseru.
  2. Vyvolat operaci ještě před vykreslením stránky a odchytit si globální proměnnou $_POST, kde jsou naše data dostupná.

Myslím, že 1. možnost je zcela jasná, pro tu druhou použijeme definovaný filtr ze strany frameworku

Nyní, bude funkce kt_fw_custom_metabox_save_fuction_callback volána vždy (a pouze), když bude docházet k načtení naší stránky se slugem kt-test-page. Akce se ale provede ještě předtím, než WordPress pošle hlavičku do prohlížeče. V případě, že odešleme ve výsledku false, funkce neprovede redirect stránky, ale pouze jí znovu vykreslí pro případ, že je potřeba vypsat například nějakou notifikaci o neprovedení akce a v proměnné $_POST zůstaly data, která uživatel vyplnil.

Hotovo! Právě jsme se naučili používat třetí tip metaboxu s možností vlastního callback funkce pro zobrazení námi definovaného obsahu.

Podobné články

V minulém díle jsme si ukázali, jak snadno přidat metabox k post typům – ať už nativním v rámci WordPressu…

Tento díl nám ukáže, jak je možné vytvářet vlastní typy obsahu – mimo databázovou strukturu. Velmi často nastává situace, kdy…

Pokud si někdo není jistý, co to metabox je, rádi bychom udělali malou rekapitulaci. Metabox je ve WordPressu blok, který…

O autorovi: Tomáš Kocifaj

Tomáš Kocifaj

Tomáš aktivně v oboru tvorby webových stránek podniká už 6. rok. Za tu dobu nasbíral spoustu zkušeností, dovedností a představu o tom, jak by měla práce takového člověka probíhat. Čím by se neměl zdržovat, zatěžovat a podle toho také s kolegou Martinem začal psát tento projekt.



Odebírejte novinky z FW

Sledujte nás!

Tyto stránky využívají Cookies. Používáním těchto stránek vyjadřujete souhlas s používáním Cookies.Zjistit víceOK, rozumím