Velmi často nastane situace, kdy potřebujete v rámci WordPress administrace založit nějakou stránku – například pro nastavení. WordPress jako takový tuto funkcionalitu umožňuje, FW vám ale dá možnost do této stránky umisťovat také metaboxy, které mohou zobrazovat například formuláře.
Objekt, který tyto stránky vytváří se dělí na dvě části:
Oba dva objekty mají velmi podobné konstruktory. Pouze v případě založení podstránky je nutné definovat navíc její rodičovskou stránku.
Uvedenou sadu funkcí lze volat nad stránkou i podstránkou. Jedná se o funkce společného rodiče.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
$screnPage = new KT_Custom_Metaboxes_Page( $title, // titulek pro atribute title odkazu $menuTitle, // anchor text odkazu $capability, // capabality stránky $slug, // slug - v URL adrese a také identifikátor stránky $iconUrl, // URL ikonky - lze také použít css název dashicons $position // v jakém pořadí se má zobrazit odkaz na stránku. Default = 55 ); $screnPage->setRenderSaveButton() // vyžádáme metabox se submit buttonem pro odeslání formuláře ->register(); // provedeme registraci stránky |
Všechny parametry použité v kontsruktoru mají také vlastní setter, je možné je nastavovat pomocí něj po inicializaci objektu.
U podstránky je pouze rozdíl v tom, že se musí zadávat navíc slug rodičovské stránky a není možnost přidat stránce ikonu a pozici (pořadí).
|
1 2 3 4 5 6 7 8 9 10 11 12 |
$screenSubPage = new KT_Custom_Metaboxes_Subpage( $parentPage, // slug nadřazené stránky $title, // titulek pro attribute title odkazu $menuTitle, // anchor text odkazu $capability, // capability stránky $slug // slug - v URL adrese a také identifikátor stránky ); $screenSubPage->setRenderSaveButton() ->register(); |
Page screen a Subpage screen mají stejného objektového PHP rodiče. Lze na ně tedy volat sadu totožných funkcí.
|
1 2 3 4 5 6 7 |
$screenPage->setNumberColumns(); // 1 nebo 2 - nastavení, v kolika sloupcích se budou zobrazovat metaboxy. Defaultně 2 $screenPage->addMetabox( KT_Metabox = $metabox ); // přidá jeden objekt metaboxu do kolekce $screenPage->addMetaboxCollection( array $metaboxCollecton ); // přidá kolekci objektu KT_Metabox do existující kolekce $screenPage->setRenderSaveButton( $boolean = true ); // zavede metabox s tlačítkem pro uložení $screenPage->register(); // provede registraci a zavedení stránky do WordPressu |
Občas je potřeba v rámci jedné založené stránky zobrazovat obsah podle parametru a hodnoty v GET. V rámci komponenty je možné volat vlastní callback funkce nebo nechat zobrazit požadovanou stránku s metaboxy.
|
1 2 3 4 5 6 7 |
$screenPage->addScreenFunctionForAction( "order_detail", // název GET parametru 1, // hodnota GET parametru "kt_show_order_detail_page" // callbackFunkce - defaultně se volá stránka s metaboxy ); |
Někdy bude nutné říct vlastní stránce to, aby jako svou výchozí stránku nevykreslila metaboxy, ale použila nějakou vámi definovanou callback funkci. Tento stav se zapisuje takto:
|
1 2 3 4 5 6 |
$screenPage->setDefaultCallbackFunction("kt_show_order_list_template_callback") // jako defaultní zobrazení nastavíme svou vlastní callback funkci ->addScreenFunctionForAction("order_detail", "1", KT_Custom_Metaboxes_Base::KT_METABOX_SCREEN); // bude-li na stránce navíc dostupný GET parametr order_detail s hodnotou 1, vykreslí se metaboxy |
WordPress používá pro identifikace screenu takzvaný „screen base“. Je to identifikátor stránky, který se používá pro zobrazení sady metaboxů. WordPress používá určité kombinace názvů k jeho vytvoření.
Bohužel WordPress rozděluje a definuje název jinak pro stránku v první úrovni a v druhé. Tyto názvy doporučujeme definovat do konstanty a tu následně používat.
|
1 2 3 4 |
// $slug - parametr, který jste udávali při založení objektu $screenBaseId = KT_Custom_Metaboxes_Page::getCustomMetaboxPageScreenName( $slug ); |
|
1 2 3 4 5 6 7 8 9 10 |
// Pro případ, kdy je stránka podstránkou některé z nativních stránek WordPressu // $parentSlug - slug rodičovské stránky (themes.php, tools.php, atd.) // $subPageSlug - slug vámi definované stránky (paremetr $slug objektu) $screenBaseId = KT_Custom_Metaboxes_Subpage::getScreenNameForNativeWpPage( $parentSlug, $subPageSlug ); // Pokud máte vlastní stránku, je připravená následující funkce // $pageTitle - titulek (v menu) vámi definované nadřazené strnky // $subPageSlug - slug vámi definované stránky (param $slug objektu) $screenBaseId = KT_Custom_Metaboxes_Subpage::getScreenNameForCustomPage($pageTitle, $subPageSlug); |
Funkce pro získání ScreenID u podstránky je dostupná zatím pouze ve větvi „Develop“. Probíhá testování této funkce.
Odebírejte novinky z FW
Sledujte nás!
Follow @ktstudiocz!