WP Framework – komponenty – Theme setting


Protože jsme si v minulých dílech prošli základní strukturu našeho Frameworku, dnes bych se rád pustil do postupného představování komponent, které FW nabízí. Dneska bych rád představil poměrně novou komponentu, která slouží pro základní nastavení WordPress šablony. Určitě Vás napadá, co je myšleno „nastavením“ šablony. To si přeci dělá uživatel?!? Ano, ano… Ale u nás této části říkáme těm věcem, které musíme vydefinovat jako vývojáři šablony. Velikosti souborů, sidebary, wordpress menu pozice, loading scriptů, souborů, atd. Dost mluvení, pojďme na to!

Komponentu jsme nazvali: KT_WP_Configurátor. Na objektu je poté k dispozici sada funkcí, manažerů nebo configurátorů.

Co vše je možné pomocí KT_WP_Configurátorů provádět?

  • registrovat postranní panely
  • schovat stránky v admin menu panelu
  • schovat existující metaboxy
  • přidat Theme support
  • přidat velikost obrázku
  • nastavit délku excreptu
  • nastavit text ukončující excrept
  • přidávání scriptů a stylů
  • registraci WordPress menu lokace

Pojďme se nyní podívat na jednoduché příklady toho, jak s komponentou obecně pracovat. Obecně u nás platí pravidlo, že se soubor s configurátorem nachází v kt/yourproject/requires/common/kt_theme_setting.inc.php



$config = new KT_WP_Configurator();

// --- registrovat postranní panely
$config->addSidebar("indentifikator-meho-sidebaru")
	->setBeforeTitle("Vypíše se před titulkem")
	->setAfterTitle("Vypíše se za titulkem")
	->setClass("css-class-sidebaru")
	->setDescription("Popisek sidebaru v administraci widgetů")
	->setId("identifikator-meho-sidebaru") // defaulně stejné jako název v konstuktoru
	->setName("Jméno našeho sidebaru");

// vše kopíruje WP Strukturu - ale není to takhle přehlednější? A bez callback funkce?


// --- schovat stránky v admin menu panelu
$config->pageRemover() // zavolej mi podkoponentu pageRemover
	->removeComments() // schovej komentáře
	->removePlugins() // schovej pluginy
	->removeTools() // schovej nástroje
	->removeUsers(); // schovej uživatele

// pageRemovere není komplexním nástrojem, jak odstranit stránky včetně bezpečnosti a užvatelských
// práve. Slouží opravdu jen pro rychlé zrušení stránky z administrace - pro 95% klientů dostačující.
// Jde jen o to, aby některé položky klienta nemátli.


// --- schovat existující metaboxy
$config->metaboxRemover()
	->removeAuthorMetabox() //schovej metabox s autorem defaultně na post_type = "post"
	->removeAuthorMetabox("muj-post-type") // schovej metabox a autorem u post_type = "muj-post-type"
	->removeCommentsMetabox() // schovej metabox s komentáři - defaultně na post_type = "post"
	->removeCategoryMetabox(); // schovej metabox s výběrem kategorií defaultně na post_type = "post"

// opět se jedná pouze o schování metaboxů. Nikoliv o zrušení možnosti odesílání nebo ukládání dat
// pomocí formuláře.


// --- přidat Theme support
$config->addThemeSupport( "post-thumbnails", array( "post", "page" ) );

// vše se řídí nativní cestou WP. Jen abychom to měli hezky všechno na jednom místě v jedné logice

// --- přidat velikost obrázku
$config->addImageSize("nazev-velikosti", 300, 300, true)
	->addImageSize("jiny-nzaev-velikosti", 640, 480, false);

// stejně jako u funkce pro založenívelikosti.


// --- nastavit délku excreptu
$config->setExcerptLength(35);


// --- nastavit text ukončující excrept
$config->setExcerptText("...");


// --- přidávání scriptů a stylů
$config->assetsConfigurator()
	->addScript("muj-script-na-fronendu", CESTA_DO_JS_SLOZKY . "/muj-script.js", array("jquery"))
	->setEnqueue();

$config->assetsConfigurator()
	->addStyle("muj-hlavni-styl", get_template_directory_uri() . "/style.css")
	->setEnqueue();

$config->assetsConfigurator()
	->addStyle("bootstrap")
	->setSource(CESTA_DO_CSS_SLOZKY . "/bootstrap.min.css")
	->setDeps(array("muj-hlavni-styl"))
	->setEnqueue();

// komponenta buď zaregistruje script / styl nebo ho rovnou zavolá do hlavičky (setEnqueue()).


// --- registraci WordPress menu lokace
$config->addWpMenu("nazev-lokace-menu", "Label menu")
	->addWpMenu("menu-v-paticce", "Odkazy v patičce");


Co je na celém objektu nejlepšího (aspoň podle nás) je to, že se nemusíme starat o to, jakou hooku nebo filtr potřebujeme volat. Pak pro ně psát nějaké callback funkce a do nich teprve dodávat logiku toho, co chceme udělat. Určitě namítnete, že některé funkce configurátoru duplikují pouze nativní funkce WP. A já říkám ano, je to tak. Ale nemusím si pamatovat, jaká hooka se má volat a nemusím pro ní psát callback funkci.

Také bych řekl, že se toho dá vymyslet spousta. Budou určitě věci, které pořád dokola děláte Vy a náš configurátor to neumí. Je tedy určitě co zlepšovat a na případné náměty se budeme těšit.

Závěrem

Komponenta nám měla pomoc vyřešit to, abychom některé callback funkce, hooky a různá nastavení nekopírovali pořád dokola. Nyní jednoduše zavolám instanci objektu, kde nám IDE všechno možnost našeptá a už jen sypeme kódy. Jedná se rozhodně o úsporu času, ale i o přehlednost kódu. Pamatuji si naše soubory, kde bylo 25 callback funkcí, nad každou nějaká hooka v každé nějaké logika a bylo to celkově takové „ošklivé“. Proto tato komponenta.

V dalším díle se podíváme na komponentu pro práci s formulářem. Tam je toho opravdu hodně, takže si to pravděpodobně rozdělíme na více dílů.

Přijeďte na naše školení do Prahy

Tomáš Kocifaj, KTStudio.cz

, ,

Komentáře jsou uzavřeny.