Rubriky Tipy a triky, WordPress: Jak na to

Custom post type, custom fields a taxonomie jsou způsobem, jak z WordPressu vytvořit univerzální platformu

Jak jsem psal v tipu shortcody a widgety, WordPress dnes představuje platformu pro vytváření webových aplikací. Tento posun začal v okamžiku, kdy bylo k článku možné uložit rozšiřující informace a pracovat s nimi prostřednictvím univerzálních funkcí. A jsou jenom tři: uložit, načíst a smazat.

Vlastní pole, custom fields

Tyto rozšiřující informace se nazývají custom fields, uživatelská pole (dříve také post meta) a vděčíme jim za to, že se možnosti WordPressu v důsledku značně rozšířily, byť je tato funkce v podstatě triviální. Uložíte hodnotu ke konkrétnímu článku, pak ji můžete načíst a zobrazit, případně smazat. Vtip je v tom, že je to jednoduché, jde o atomickou vlastnost, jednodušší už to být nemůže. Takže je to stabilní a lze na tom stavět složitější struktury.

Dlouho ale chyběla možnost pro uživatele, jak by s hodnotami mohl kultivovaně pracovat. Zobrazoval se jen boxík, kde byl uložen název pole a jeho hodnota (ostatně ještě stále existuje). Programátorsky to bylo snadné, ale uživatelsky nikoliv. Následně se tedy objevily další funkce pro práci s metaboxy.

Metaboxy jsou rámečky, boxíky, které vidíte, když upravujete článek. Programátoři mohou vytvořit vlastní a umožnit tak uživateli, aby hodnoty pro uživatelská pole vkládal pohodlně. A tak jsme se dostali do fáze, kdy příspěvek přestal být příspěvkem a stal se datovým záznamem. A odtud byl krůček k další abstrakci – k vlastnímu typu článku.

Vlastní typ článku, custom post type

Standardně jsou ve WordPressu tyto typy článků: příspěvek, stránka, příloha (stránka, která se automaticky vytváří každému nahranému souboru). Mnoho pluginů si ale vytváří své vlastní typy článků, custom post type. Přiřadí k nim uživatelská pole a vytvoří tak zcela originální datový záznam, který se nejmenuje příspěvek ani stránka, nemusí obsahovat ani editor, ale naopak může obsahovat zcela nové položky. Jejich další výhoda spočívá v tom, že programátorsky se pracuje na určité abstraktní rovině a využívá se připravených funkcí. Programátor nevymýšlí žádné základní obslužné rutiny, využívá připravenou platformu. Dokonce si základní kód může nechat vygenerovat.

Uživatelská pole je možné samozřejmě přidávat k již existujícím článkům vlastního typu – a produkt ve WooCommerce je taky custom post type.
Takže ho lze tedy rozšířit o další parametry.

woocommerce_rozsireny_produkt
Woocommerce – rozšířený produkt

Vlastní řazení do kategorií, taxonomie

Posledním chybějícím prvkem byly vlastní typy kategorií. Když článek máte, potřebujete také nějaké rubriky. Vlastní, na míru. Říká se jim obecně taxonomie a jsou dvojího typu – stromové (kategorie) a plošné (štítky). Vše si ukážeme na příkladu.

Když se nyní podíváte zpětně na základní výbavu WordPressu, pak si uvědomíte, že článek typu příspěvek a stránka jsou jen jednou realizací vlastního typu článku (CPT), že nemají žádná uživatelská pole a že rubriky a štítky jsou jen jednou realizací vlastní taxonomie. Vývoj této části WordPressu prošel od konkrétního k abstraktnímu. Takže ho lze tedy rozšířit o další parametry.

Reálné příklady využití z mé dílny

Uvedené vlastnosti používám často a rád. Následují tedy příklady z praktických realizací pro zákazníky. Mohl bych pro práci využít některé z pluginů, jako je Advanced Custom Fields nebo framework jako Piklist, ale nedělám to. Má to své výhody i nevýhody, radši mám kód pod kontrolou a nezatěžuji web dalšími pluginy.

Katalog pro realitního makléře

Poměrně komplexní katalog nemovitostí, který je obsahuje podrobnou kartu každé nemovitosti a jeji kategorizaci (to jsou ony taxonomie) několika způsoby – podle typu nemovitosti, podle dispozic, podle oblasti a dále podle štítků. Propracované je také zobrazení nemovitosti, ale to už nesouvisí s tématem tohoto článku. Výsledek můžete vidět na webu Hledambyt.com.

Katalog nemovitostí - WordPress
Katalog nemovitostí – WordPress

Databáze odtažených vozidel pro Městskou policii Litoměřice

Při odtahu se SPZ vozidla zadá do databáze. Zapisovat smí pouze vybraní uživatelé, mazat smí zase uživatelé s patřičnými oprávněními. Jakmile si majitel přijde vozidlo vyzvednout, do záznamu je vloženo datum vydání a záznam se automaticky přesune do archivu. Na webu funguje vyhledávání podle SPZ/RZ.

katalog_vozidel_mepol
Vyhledávání podle SPZ/RZ
Tímto způsobem poměrně často vylepšuji weby zákazníků. Pak už jde spíše o aplikaci, protože data je možné exportovat, různě filtrovat nebo kombinovat. Samozřejmostí je napojení třeba na chytré formuláře, umím také propojovat funkce více pluginů.. zkrátka je to radost! 🙂

Autorem fotky je Ismas

Tohle vás taky bude zajímat

Jak funguje WordPress uvnitř: loop Hlavním motorem, který zajišťuje, že se načte a zobrazí požadovaná stránka webu, je loop. Je to cyklus, který probíhá v několika fázích. Pokud některá z nich chybí nebo je špatně upravená, stránka nebude fungovat správně. Při modifikaci loopu se čast...
Jak funguje WordPress uvnitř: hooky Vnitřní logika WordPressu je propracovaná a pokud ji neznáte, budete věční lepiči kódu. Cokoliv upravíte, se vám při aktualizaci přepíše, takže radši přestanete aktualizovat, čímž odsoudíte systém k zániku. Naučte se tedy principy, jak to ve WordPres...

4 komentáře u “Custom post type, custom fields a taxonomie jsou způsobem, jak z WordPressu vytvořit univerzální platformu

  1. Ahoj, uvedené příklady (katalog a vyhledávání) jsou vytvořené jen pomocí custom fields, custom post type a taxonomie? Rád bych něco podobného pro jednoho klienta také vytvořil, zatím jsem to řešil formou pluginů, ale zastávám také názor, že je lepší se pluginům vyhnout. A zobrazení nemovitostí v katalogu je teda uděláno jak? 🙂 díky

  2. Ahoj, Martine, ano, je to vytvořeno, jak píšu. Vzhled je pak úkolem šablony, každý CPT a taxonomie má své skripty v šabloně, pokud existují, tak se načtou, jinak je použit např. základní single.php nebo až index.php. Takže pokud mám CPT jménem zaznam, tak skript v šabloně pro zobrazení je single-zaznam.php, archiv těchto článků je archive-zaznam.php. Vlastní taxonomie s názvem obory má pak zobrazení taxonomy-obory.php (tedy výpis všech článků této „rubriky“); v realitě bývá archiv záznamů (2016/09/) a obsah kategorie zobrazován stejně nebo velmi podobně.
    Co a jak se bude ve skriptech zobrazovat, je pak samozřejmě úkolem programátora. Blbé je, že není univerzální způsob, jak to udělat pro každou šablonu… jedině úpravou na míru, nebo shortcodem.

    vl.

    • a registrace CPT jsou primo ve functions.php dane šablony? Nebylo by pak řešením jisté univerzálnosti napsat si jednoduchý plugin, kde budu mit předdefinované sve CPT, tax. a další a jen ho v dalších projektech opakovaně používat? To ale vlastně řeší jen admin část, nikoli frontend.

      • Ano, přesně tak. Já to tak většinou dělám, protože frontend se stejně liší u každé šablony. Většinu zobrazovacích rutin píšu jako funkce z pluginu, v šabloně se jen volají, aby ta logika v šabloně nebyla.

        (Není nic horšího, než premium šablona plná CPT. Nejde odtud snadno migrovat, data jsou vázaná na šablonu. Když je to plugin, může zůstat i po změně šablony.)

Napsat komentář

Pin It on Pinterest