Tvorba WP šablony – 5. díl – Práce s post_type

18.01.2016 | Tomáš Kocifaj

Na úvodní stránce nám chybí už jen vytvořit seznam referencí, které chceme prezentovat. K tomu budeme potřebovat vlastní post_type a některé klíčové nastavení, které z toho plyne. V dnešním díle si tedy ukážeme, jak pracovat s vlastním typem post_typu a potřebnými modely, prezentery a configy.

Zdroj šablony po dokončení pátého dílu

Co bude dnešním úkolem dílu?

  1. Definovat vlastní typ obsahu
  2. Vytvořit vlastní model pro prezentaci dat
  3. Vytvořit presenter pro detail našeho post_type
  4. Osadit úvodní stránku výpisem

Definovat vlastní typ obsahu

Protože se celý post_type a všechny věci kolem něj definují pouze pomocí pole, je to tedy velmi snadné a přímočaré. V rámci frameworku není vytvořeno nic speciálního. Bylo by to jako znovu vymýšlet kolo, které má plnit stejnou funkčnost jako to kolo, které známe. Jediné, co bychom měli správně dodržet je umístění souboru s definicí vlastního typu obsahu.

Všechny definice obsahu se ukládají na místo /yours/requires/definitions a bude se jmenovat jako námi potřebný typ obsahu –  v našem případě kt_wpfw_reference_definitions.inc.php

V rámci registrace vznikla nová konstanta KT_WPFW_REFERENCE_KEY která bude uložené v souboru kt_init.inc.php pro náš projekt ve složce yours.

K této operaci asi není co psát. Je to běžná operace při zakládání nového typu obsahu. Nyní, když se podíváme do administrace našeho projektu, uvidíme v levém menu novou položku dle našeho pojmenování v proměnné $labels. Jediné, co stojí za pozornost je část v definici $args položka supports – Pro všechny typy post_type supports jsou na straně wpfw vytvořeny potřebné konstanty.

Protože chceme u post_typu využívat support pro práci s náhledovým obrázekm (KT_WP_POST_TYPE_SUPPORT_THUMBNAIL_KEY) je potřeba obrázky povolit v celé šabloně. Do souboru kt_theme_setup.inc.php ve složce yours/requires/common/ přidáme před metodu initialize() následující aktivaci.

Vytvořit vlastní model pro prezentaci dat

Pokud máme vlastní typ obsahu, měli bychom myslet také na to, že dříve nebo později budeme potřebovat pracovat s jeho sadou dat, k tomu budeme potřebovat model. Mohli bychom využít obecný a používat přímo ten, ale je lepší mít logiku oddělenou, kdybychom narazili na případné odlišnosti od modelu výchozího. Nyní nás to bude stát trochu práce – přepisovat a upravovat projekt později může být mnohem náročnější proces.

Jako všechny ostatní modely i ten náš bude umístě v /yours/models/ a subour se bude jmenovat dle pravidel – kt_wpfw_reference_model.inc.php

Pro tuto chvíli je to vše co potřebujeme – definujeme vlastní model, který dědí všechny vlastnosti modelu obecného. Další funkce nepotřebujeme, budeme využívat převážně ty na obecném modelu.

Nyní, když budeme chtít pracovat s konkrétním záznamem v sekci reference, budeme využívat právě tento náš model.

Vytvořit presenter pro detail našeho post_type

Stejně jako bylo potřeba vytvořit model pro daný typ obsahu, bude dobré myslet i na to, že budeme potřebovat časem i detail daného záznamu (nebo jiným způsobem presentovat data). Ten obsluhuje presenter – pojďme ho tedy vytvořit.

Prozatím nám opět postačí základní presenter, který dědí presenter obecný. Připíšeme navíc pouze jednu funkci a to metodu getModel() která vrátí model objektu rodičovského – důležité ale je, že v rámci komentářů definujeme, jaký typ objektu (modelu) nám funkce vrací. Ulehčí nám to v budoucnu spousty práce.

Nezapomeňte, že MODEL i PRESENTER mají jasné pravidla pro pojmenování souboru a třídy samotné. Bez správného názvosloví nebude framework schopen korektně načítat třídy.

Osadit úvodní stránku výpisem

Pokud již vše máme, zbývá nám model a presenter implementovat do naší úvodní stránky, kde je potřeba vypisovat poslední 4 reference, které jsme na náš web přidaly.

Napřed si musíme vytvořit loop soubor na základě HTML. Do složky /loops/ v rootu šablony vytvoříme nový soubor loop-reference.php. Pokud se podíváme do složky /partials/ najdeme zde soubor recent-works.php je to přesně ten soubor, který bude naše reference vypisovat. Přesně tam najdeme HTLM strukturu každé reference, která se v daném místě vypíše.

Náš soubor loop-reference.php bude vypadat nějak takto:

V rámci definovaného HTML nám stačilo pouze osadit odkazy na náhledový obrázek (prozatím velikost ze strany WordPress – thumbnail) a dodat popisek naší reference. Vše nám snadno, rychle a efektivně dodá model a presenter.

Presenter pro výpis referencí

Stejně jako v předchozí části šablony, i zde si nyní vytvoříme presenter, který nám vypíše potřebné data. Založíme si tedy nyní presneter, který  pojmenujeme kt_wpfw_references_presenter.inc.php a umístíme ho do složky s ostatními presentery. Náš presenter bude dědit základní base. Jeho struktura bude vypadat takto:

Protože náš presenter dědí základní base pro všechny presentery, máme k dispozici několik klíčových metod, které potřebujeme pouze trochu rozšířit.

getQuery()

Tato metoda nám vrátí objekt WP_Query, který obsahuje dotaz a data, která nám byla vrácena. S objektem WP_Query můžeme pak následně dle potřeby pracovat jak jsme z WordPressu naučení.

isQuery()

Metoda nám vrátí true / false pro případ, že byla WP_Query vytvořena a zároveň má nějaké data pro výpis.

theQuery()

Zde už probíhá trochu „magie“. Abychom nemuseli neustále psát běžnou WordPress loopu, framework má připravenou jednoduchou metodu právě na základním presneteru, která je statická a nazývá se theQueryLoops(). Ta na základě vytvořené query v objektu a předaného klíče post_typu provede celou loopu sama a korektně.

Zde si velmi dobře pamatujte, že soubor s loopou (loop-reference.php) musí mít stejný název jako klíč – v našem případně reference. Framework hledá ve složce /loop/ soubor loop-{post_type}.php

initQuery()

Metoda obstarává právě načtení a vytvoření WP_Query objektu dle našich požadavků a příslušné selekce dat. V našem případě jsme tedy definovali, že chceme pouze náš potřebný typ obsahu, výchozí počet a řazení.

Osazení příslušného partial

Nyní nám už zbývá pouze osadit soubor ve složce /partials/ který jsme si pojmenovali jako recent-works.php

Jak vidíte, stačí již pouze zavolat presenter, zjistit, zda má co vypisovat pomocí metody isQuery() a následně použít vytvořenou metodu theQuery() která se postará o výpis.

Závěrem

V dnešním díle jsme si vytvořili potřebný model a presenter pro námi definovaný post_type – ukázali jsme si, jak se pracuje v případě jeho výpisu a co k tomu v rámci frameworku můžeme použít. Stačí si nyní založit několik referencí a hned uvidíme výsledek.

V dalším díle si ukážeme, jak definovat velikost vlastního obrázků, abychom docílili potřebného rozměru a začneme vytvářet detaily pro stránky.

Podobné články

To, proč jsme s tímto projektem začali, byl důvod, že jsme jednotlivé šablony pro WordPress chtěli vytvářet opravdu efektivně, kvalitně…

V minulém díle jsme provedli základní vytvoření kostry šablony, načetli jsme do FE externí zdroje, jako jsou obrázky, javascriptové a…

V minulém díle jsme si ukázali, jak vytvořit základní kostru šablonu společně s nainstalovaný KT Frameworkem. V dnešním díle bychom…

V minulém díle jsme naší šablonu zhotovili do stavu, kde již máme potřebné prvky ve WordPressu. Nyní bude potřeba zhotovit pro…

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