knihovna

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

Caldera Forms: Jak umožnit správu uživatelům, kteří nejsou správci... Caldera Forms umožňuje upravovat formuláře pouze administrátorům. Zatím asi neexistuje nastavení nebo plugin který by umožnil tento stav změnit. Existuje však filtr, který to dokáže. Jmenuje se caldera_forms_manage_cap a vrací název oprávnění,...
Instalace WordPressu K instalaci WordPressu je potřeba zajistit, aby byly k dispozici potřebné hardwarové a softwarové prostředky. Jednoduše řečeno: WordPress běží na serveru a potřebuje například databázi. Vše si můžete koupit jako službu za několik stovek korun ročně. ...

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