Kdykoliv se má na WordPressu zobrazit detail nějakého příspěvku nebo jejich výpis (tzv. archiv) musí se zvolit co možná nejvhodnější šablona. Nejlépe vám postup rozhodování představím na detailu příspěvku.
Ještě před tím bych ale rád vysvětlil, co to je ve WordPressu post type. Pokud máte pouze jednoduchý blog bez pluginů, setkáte se pouze se dvěma post type – post (Příspěvek) a page (Stránka). Rozdíl mezi nimi znáte. Ještě zmíním revision (do kterých se ukládají revize), attachment (všechny přílohy, které do WordPressu nahrajete mají vlastní detail) a nav_menu_item (pro vytváření menu), ale s nimi běžně nepracujete, protože fungují na pozadí systému.
Vy si ale můžete přidat vlastní post type, kterými mohou být například Filmy, Knihy nebo Produkty v eshopu. Ty mohou mít odlišná pole v administrace a na webu se zobrazovat ve vlastní šabloně. Teď ale zpět k zobrazení detailu příspěvku
Zobrazení detailu příspěvku:
- V momentě, kdy si někdo chce zobrazit detail příspěvku, WordPress si vyhledá, zda v šabloně neexistuje soubor ve tvaru single-{post-type}-{slug}.php. Pokud bychom měli post type film s url (slug) /star-wars, hledal by WordPress soubor single-film-star-wars.php Pokud by takový soubor existoval, použije se jako šablona. Pokud ne, přesune se k dalšímu kroku.
- WP začne hledat soubor ve tvaru single-{post-type}.php. V našem případě by to bylo single-film.php. Pokud existuje, použije ho, pokud ne, jde dále.
- Následně se WordPress pokusí najít soubor single.php. Pokud ani ten neexistuje, hledá
- singular.php což je šablona společná pro posts a pages (od verze 4.3)
- a pokud neexistuje žádný soubor z výše jmenovaných, použije jednoduše defaultní šablonu, která se nachází v index.php
WordPress takto postupuje shora dolů a snaží se najít to nejvhodnější šablonu. S single-{post-type}-{slug}.php se v klasické šabloně asi nesetkáte a ani byste ho neměli příliš používat. Nikdy nemůžete od uživatele čekat, že bude mít stránku s určitou url – co když ji bude chtít přejmenovat? Pokud však rychle potřebujete upravit vzhled jedné konkrétní stránky, tak se jako rychlé řešení může hodit.
Na podobném principu fungují i ostatní souborové šablony.
Zobrazení stránky detailu stránky:
Stránka je sice ve WordPress pouze post type page, ale přece jen má její šablonovací systém zvláštnosti.
- Nejdříve WordPress hledá, zda není definovaná custom page, která může být v libovolném názvu souboru. Custom page si vybírá uživatel při publikování stránky a jak si ji vytvořit naleznete pod tímto seznamem.
- Na podobném principu funguje page-{slug}.php a page-{id}.php. Slug stránky má přednost. Opět nepatří do nějaké obecné šablony, ale slouží pro nějakou rychlou úpravu na webu. Pokud není vyloženě třeba, nepoužívat.
- Nejobecnější stránkou je page.php
- Následně se v novějších verzí poptá i singular.php (objevil se teprve ve WordPressu 4.3)
- A jako poslední index.php
A teď si ještě ukážeme, jak vytvořit vlastní šablonu pro page. Funguje to na velmi jednoduchém principu. Vytvoříte si nový php soubor a na jeho začátek vložíte komentář.
<?php /* Template Name: Vlastní stránka */ ?>
V administraci se pak u stránky objeví možnost zvolit si šablonu výchozí a šablonu „Vlastní stránka“. Což může být například page bez sidebaru.
Archivy stránek
Archivy stránek slouží pro výpis příspěvků podle určitého filtru. V praxi jde o výpis kategorií (category-{slug}.php, category-{id}.php, category.php), tagů (tag-{slug}.php, tag-{id}.php, tag.php), libovolné taxonomy (taxonomy-{taxonomy}-{term}.php, taxonomy-{taxonomy}.php, taxonomy.php), výpis libovolného post type (archive-{post_type}.php), autorů (author-{nicename}.php, author-{id}.php, author.php) či datumů (date.php)
A všechny pak mají společný template archive.php používaný jako výchozí. A ještě přidám malý fígl. Následující kód vám zobrazí název archivu, například „Archiv pro rok: 2008“:
<h1><?php echo the_archive_title(); ?></h1>
Přílohy (attachments)
Ve WordPressu má ještě svůj detail i každá příloha (což je vlastní post type). Já osobně přílohové stránky přesměrovávám na svého parenta, protože obyčejně není žádný důvod je zobrazovat samostatně. Mně slouží jako samostatné soubory.
Nicméně pokud byste jim chtěl vložit vlastní šablony, stačí pro ně vytvořit soubor MIME_type.php, attachment.php či single-attachment.php.
Ostatní šablony
Je ještě několik šablon, které se dají použít a jsou do jisté míry speciální. Pokud uživatel nastaví jako homepage statickou stránku a základní výpis článků bude na jiné stránce, použije se soubor home.php.
Do hry ale ještě vstupuje front-page.php – ta se použije jako šablona hompage ať už jde o statickou stránku nebo blogový výpis článků.
A jako poslední tu máme šablonu pro vyhledávání search.php a chybovou stránkou 404 404.php.
Je toho dost, že? Existuje ale přehled, který vám pomůže se trochu zorientovat. Můžete si ho vytisknout a pověsit na zeď, než ho vaše mozko-nervy zpracují.
Aktuální stav
V tomto díle jsme si ukázali, jak připravit vzhled pro jednotlivé druhy stránek. Příkladový kód, který je na Githubu jsem obohatil o singular.php, archive.php, 404.php, search.php a page-no-sidebar.php. A příště? Když už máme ten detail stránky, můžeme si ukázat jak si na stránku vložit komentáře.