Přejít k obsahu
BeoHosting
BeoHosting
WordPress

Průvodce vlastními typy příspěvků ve WordPressu

BeoHosting Team··10 min čtení čtení
Průvodce vlastními typy příspěvků ve WordPressu

Co jsou vlastní typy příspěvků

Platforma WordPress se ve výchozím nastavení dodává se dvěma typy obsahu – příspěvky (blogové články) a stránky. Většina webů však má obsah, který nepatří do žádného z těchto typů. Projekty v portfoliu, produkty, recenze, události, nabídky nemovitostí, recepty nebo členové týmu jsou příklady obsahu, který vyžaduje vlastní strukturu a zobrazení. Vlastní typy příspěvků (custom post types) vám umožňují vytvářet nové typy obsahu s vlastními poli, taxonomiemi a šablonami.

Vlastní typy příspěvků jsou základním konceptem vývoje pro WordPress, který mění WordPress z blogovací platformy na kompletní CMS (Content Management System). Každý WordPress plugin, který přidává nový typ obsahu, jako jsou produkty WooCommerce, události The Events Calendar nebo portfolio pluginy, používá pod kapotou vlastní typy příspěvků. Pochopení CPT vám dává plnou kontrolu nad strukturou obsahu na vašem webu.

Registrace vlastního typu příspěvku

Funkce register_post_type

Vlastní typ příspěvku se registruje pomocí WordPress funkce register_post_type volané uvnitř hooku init. Funkce přijímá dva argumenty – slug, což je interní identifikátor typu obsahu, a pole argumentů, které definují chování a vzhled v administraci. Slug by měl být v jednotném čísle, malými písmeny, bez mezer a maximálně 20 znaků dlouhý. Například pro projekty v portfoliu by slug byl project, pro nemovitosti property, pro recepty recipe.

Klíčové argumenty

  • labels: Pole popisků, které WordPress používá v administračním rozhraní, včetně name pro množné číslo, singular_name pro jednotné číslo, add_new pro tlačítko přidání, edit_item pro nadpis stránky úprav a search_items pro vyhledávání.
  • public: Zda je typ obsahu veřejně dostupný na frontendu. Nastavte na true pro obsah, který by návštěvníci měli vidět.
  • has_archive: Zda má typ obsahu archivní stránku, která zobrazuje všechny položky, podobně jako blogová stránka pro příspěvky.
  • supports: Které funkce WordPressu jsou pro tento typ obsahu dostupné, včetně title, editor, thumbnail, excerpt, custom-fields, comments a revisions.
  • menu_icon: Ikona Dashicons zobrazená v postranním panelu administrace. WordPress se dodává s více než 300 ikonami pro různé účely.
  • rewrite: Definuje strukturu URL pro tento typ obsahu. Například slug portfolio vytváří URL jako vaseweb.cz/portfolio/nazev-projektu.
  • show_in_rest: Aktivuje editor Gutenberg a přístup přes REST API. Nastavte na true pro moderní WordPress weby.

Advanced Custom Fields (ACF)

Proč používat ACF

Vlastní pole WordPressu jsou základním mechanismem pro přidávání dodatečných dat k obsahu, ale nativní rozhraní je nepraktické. Plugin Advanced Custom Fields proměňuje zážitek z tvorby obsahu přidáním intuitivních polí jako textový vstup, textarea, výběr obrázku, datepicker, pole Google Maps, relační pole a mnoho dalšího. ACF je de facto standardem ve vývoji pro WordPress s více než 2 miliony aktivních instalací a používají ho agentury po celém světě.

Typy polí

ACF nabízí přes 30 typů polí uspořádaných do kategorií. Základní pole zahrnují text, textarea, číslo, e-mail, URL a heslo. Výběrová pole jsou select, checkbox, radio button, button group a true/false. Obsahová pole jsou obrázek, soubor, WYSIWYG editor, oEmbed pro video a galerie. Relační pole jsou link, post object, page link, relationship a taxonomy. Pole pro rozvržení jsou group, repeater pro opakující se sekce, flexible content pro modulární rozvržení a clone. Pole repeater je obzvláště výkonné, protože umožňuje vytvářet opakující se struktury jako seznam členů týmu, sekce s ikonami nebo tabulku specifikací.

Zobrazení polí ACF

ACF poskytuje jednoduché PHP funkce pro zobrazení hodnot polí v šablonách. Funkce get_field vrací hodnotu pole, zatímco the_field hodnotu přímo vypisuje. U obrázků get_field vrací pole s URL, šířkou, výškou a alt textem. U polí repeater použijte have_rows a the_row ve smyčce while pro iteraci přes všechny řádky. U flexible content použijte get_row_layout pro určení, které rozvržení je aktivní, a zobrazení odpovídající šablony. Dokumentace ACF je extrémně podrobná s příklady pro každý typ pole.

Vlastní taxonomie

Co jsou taxonomie

Taxonomie jsou systémy pro klasifikaci obsahu. WordPress má ve výchozím nastavení dvě taxonomie – kategorie, které jsou hierarchické, a štítky, které jsou plošné. Pro vlastní typy příspěvků jsou obvykle potřeba vlastní taxonomie. Například projekty v portfoliu mohou mít taxonomii typu projektu s hodnotami jako webdesign, branding a fotografie. Nemovitosti mohou mít taxonomie pro lokalitu, typ nemovitosti a cenové rozpětí. Recepty mohou mít kuchyni, typ pokrmu a úroveň obtížnosti.

Registrace taxonomií

Funkce register_taxonomy se volá uvnitř hooku init podobně jako register_post_type. Přijímá tři argumenty – slug taxonomie, pole typů příspěvků, na které se vztahuje, a pole argumentů. Argument hierarchical určuje, zda taxonomie funguje jako kategorie se vztahem rodič–potomek, nebo jako štítky s plošnou strukturou. Popisky (labels) definují, jak se taxonomie zobrazuje v administraci. Argument rewrite řídí strukturu URL pro archivní stránky taxonomie.

Hierarchické vs plošné taxonomie

Hierarchické taxonomie se v administraci zobrazují jako seznam zaškrtávacích políček s možností vytvářet nadřazené a podřazené termíny. Používejte je pro klasifikace s jasnou strukturou, jako jsou lokality, kde Česká republika má podkategorie Praha, Brno a Ostrava. Plošné taxonomie se zobrazují jako pole pro zadávání štítků, kam termíny píšete oddělené čárkami. Používejte je pro flexibilní označení jako technologie, dovednosti nebo charakteristiky, kde neexistuje hierarchický vztah.

Soubory šablon pro vlastní typy příspěvků

Hierarchie šablon WordPressu

WordPress používá specifickou hierarchii pro určení, který soubor šablony bude použit pro zobrazení obsahu. Pro vlastní typ příspěvku se slugem project hledá WordPress soubory v následujícím pořadí. Pro jednotlivé položky hledá single-project.php, poté single.php, poté singular.php a nakonec index.php. Pro archivní stránku hledá archive-project.php, poté archive.php a nakonec index.php. Vytvořte specifické soubory šablon pro svůj CPT, abyste měli plnou kontrolu nad zobrazením.

Šablona single

Šablona single zobrazuje jednu položku vašeho vlastního typu příspěvku. Například single-project.php pro projekt v portfoliu zobrazuje název projektu, hlavní obrázek, popis, pole ACF jako klient, datum, URL projektu a galerii obrázků. Použijte WordPress smyčku the_loop pro přístup k datům příspěvku a funkce ACF pro vlastní pole. Přidejte navigaci mezi projekty pomocí previous_post_link a next_post_link a sekci souvisejících projektů na základě taxonomie.

Šablona archivu

Šablona archivu zobrazuje seznam všech položek s filtrováním podle taxonomie. Například archive-project.php zobrazuje mřížku projektů v portfoliu s náhledem, názvem, kategorií a krátkým popisem. Přidejte tlačítka filtrů pro taxonomie, aby návštěvníci mohli filtrovat projekty podle typu. Stránkování umožňuje navigaci velkým počtem položek. Pro pokročilé zobrazení použijte WP_Query s vlastními argumenty pro řazení, filtrování a seskupování položek.

WP_Query pro vlastní typy příspěvků

Vlastní dotazy

Třída WP_Query umožňuje vytvářet vlastní dotazy pro získávání položek vlastního typu příspěvku se specifickými kritérii. Argument post_type definuje, který typ obsahu načítáte. posts_per_page řídí počet výsledků. orderby a order definují řazení podle data, názvu, menu_order nebo hodnoty meta. tax_query filtruje podle taxonomie s možností kombinovat více taxonomií pomocí operátorů AND nebo OR. meta_query filtruje podle hodnot vlastních polí s operátory jako rovná se, větší než, menší než, LIKE a BETWEEN.

Příklady dotazů

Pro zobrazení posledních 6 projektů z portfolia z kategorie webdesign seřazených podle data použijte WP_Query s argumenty post_type project, posts_per_page 6, tax_query s taxonomií project_type a termínem web-design. Pro zobrazení nabídek nemovitostí s cenou mezi 50 000 a 100 000 eur použijte meta_query s klíčem price, typem NUMERIC a operátorem BETWEEN. Po vlastních dotazech vždy resetujte globální objekt příspěvku pomocí wp_reset_postdata, abyste nenarušili hlavní smyčku WordPressu.

REST API a Gutenberg

Přístup přes REST API

S argumentem show_in_rest nastaveným na true automaticky získá váš vlastní typ příspěvku endpoint REST API na adrese vaseweb.cz/wp-json/wp/v2/slug. To umožňuje načítání, vytváření, aktualizaci a mazání položek prostřednictvím API volání, což je základem pro přístup headless WordPress a JavaScriptové frontendy. Pole ACF mohou být zpřístupněna v REST API pomocí pluginu ACF to REST API nebo manuální registrací polí pomocí funkce register_rest_field.

Bloky Gutenberg

S aktivovaným show_in_rest používá váš CPT editor Gutenberg místo klasického editoru. Můžete vytvářet vlastní bloky Gutenberg specifické pro váš typ obsahu pomocí ACF Blocks, které umožňují vytvářet bloky s PHP šablonami a poli ACF bez znalosti Reactu. Například pro portfolio můžete vytvořit blok, který zobrazuje mřížku vybraných projektů, nebo pro recepty blok, který formátuje seznam ingrediencí a kroky přípravy s vlastním stylováním.

Osvědčené postupy pro vlastní typy příspěvků

Pojmenování a organizace

Používejte prefix pro slug svého CPT, abyste předešli konfliktům s jinými pluginy a aktualizacemi WordPressu. Například místo project použijte myplugin_project. Seskupte registraci CPT a taxonomií do samostatné třídy nebo souboru pro snazší údržbu. Používejte konstanty pro slugy, abyste předešli překlepům. Dokumentujte každý CPT s popisem jeho účelu, seznamem polí ACF a taxonomiemi.

Výkon

Každý vlastní typ příspěvku přidává databázové dotazy, proto se vyhněte vytváření příliš mnoha CPT, když taxonomie mohou dosáhnout stejného cíle. Například místo samostatných CPT pro blog, novinky a tutoriály použijte standardní příspěvky s kategoriemi. Pole ACF se ukládají jako post meta v databázi – u polí často používaných v dotazech zvažte vytvoření vlastní tabulky pro lepší výkon. Cachujte složité dotazy WP_Query pomocí transient API, abyste snížili zátěž databáze. V našich řešeních WordPress hostingu máme prostředí optimalizované pro weby s vlastními typy příspěvků a pokročilými dotazy s dostatkem PHP paměti a rychlými SSD disky pro svižný zážitek z administrace.

Závěr

Vlastní typy příspěvků proměňují WordPress z blogovací platformy v mocný CMS schopný spravovat jakýkoli typ obsahu. Kombinace funkce register_post_type pro vytváření typů obsahu, ACF pro vlastní pole, vlastních taxonomií pro klasifikaci a souborů šablon pro zobrazení vám dává plnou kontrolu nad strukturou a prezentací obsahu. Tyto znalosti jsou základem profesionálního vývoje pro WordPress (začněte naším průvodcem) a otevírají možnosti pro tvorbu složitých webů jako portfolio prezentace, produktové katalogy, adresáře a firemní aplikace.

BeoHosting Team

10+ let zkušeností — Specialisté na webhosting a infrastrukturu

  • Web Hosting
  • WordPress Hosting
  • VPS
  • Dedicated Serveri
  • Domeni
  • SSL
  • cPanel
  • LiteSpeed
  • Linux administracija
  • DNS

Naposledy aktualizováno: