custom post types a post format
DESCRIPTION
Wordpress Custom Types a Post Format se všemi argumenty. Přednáška z povedeného prvního Wordcampu u nás.TRANSCRIPT
CUSTOM POST TYPESPost formats
Kdo neví co je to Wordpress?
Základní rozdělení druhů obsahu
POST – článek PAGE – stránka ATTACHMENT – soubor REVISION – revize NAVIGATION MENU – navigační menu
POST - článek
Článek je obsah, který publikujete periodicky a dá se řadit do tematických kategorií.
Je to základ blogů, webových magazínů a portálů.
Každý, kdo kategorizuje obsah, vytváří články.
Kategorie = Taxonomie
Protože články mohou být velmi různorodé, spojnice mezi nimi jsou taxonomie, což se dá označit za společnou vlastnost určité množiny článků.
Do taxonomie patří i TAGY, štítky. Tagy mohou ještě více propojit články navzájem, můžete mít kategorii Sport a kategorii Bulvár. Štítek Jaromír Jágr propojí články „Jarda zase v kasínu“ a článek „Devils opět prohráli“.
PAGE - stránka
Stránka je oproti článku obsah, který má ve struktuře webu neměnné místo a jeho obsah je „Statický“.
Typickou ukázkou stránek, jsou firemní weby, kde najdete „O nás“, „Reference“, „Kontakt“.
Stránka nemá kategorii, jde o část webu, která se často nemění a je zaměřená na jednu „informaci“.
Příklad stránky – Reference
Stavební firma přidává na stránku reference, ale informace se nemění, pouze se rozšiřuje její velikost.
ATTACHMENT - soubory
Každý soubor, který nahrajete do Wordpressu je attachment.
Protože se jedná o druh obsahu, má i svou vlastní stránku.
URL souboru != url attachment page
Zde vzniká nepochopení, protože url souboru vede do složky, ale url attachment page je na stejné úrovni, jako url článku, nebo stránky.
Attachment jsou ve většině případů obrázky.
Může ale jít o jakýkoliv soubor, který je podporován
jpeg
csv
mp4
REVISION - revize
Revize jsou uložené všechny varianty jednoho článku, které jste vytvořili.
Každá změna, kterou uděláte v obsahu, se uloží jako revize a vy se k ní pak budete moci vrátit v případě, že to bude potřeba.
Navigační menu
Navigační menu je obsah, který vytvoříte pokaždé, když uložíte nějaké menu. Do něj se ukládají všechny informace, které Wordpress potřebuje pro vygenerování menu.
Drtivá většina menu v šablonách jsou vytvářena tímto způsobem.
POST FORMATS – post formáty
Jak název napovídá, jedná se o různé formáty postů, tedy článků. Jsou to v podstatě různé obaly na jeden druh obsahu. Pokud si druhy obsahu označíme jako dopravní prostředky, tak stránka je automobil, článek je vlak.
Ve vlaku můžete najít normální vagón, kuřácký vagón, poštovní vagón, jídelní vagón, atd…
Stejně tak je to i s post formáty, protože máte k dispozici články a těm můžete přiřadit post formát normální, video, chat, obrázek, atd…
Šablona musí post formáty podporovat
V šabloně musí být definovaná podpora post formátů, jinak nejsou k dispozici
add_theme_support( ‚post-formats‘, array( ‚aside‘,‘image‘,‘video‘ ) );
Podporované post formáty
Aside
Gallery
Link
Image
Quote
Status
Video
Audio
Chat
Standartní článek
Aside
Gallery
Status a Link
Image
Quote
Video
Audio
Chat
Custom post types
Custom post type jsou vlastní druhy obsahu. Wordpress se díky možnosti vytvářet vlastní obsah, začíná zbavovat nálepky blogovacího systému a vznikají pro něj eshopové a další pluginy.
Můžete tak vytvořit jakýkoliv druh obsahu a ten pak používat. Jste schopni separovat takový obsah od článků a stránek, díky čemuž je administrace obsáhlejšího webu přehlednější.
Zároveň je díky hierarchickému uspořádání načítání souborů šablony, možné vytvořit vlastní zobrazení obsahu custom post types.
V praxi to znamená, že pokud máte post type Hotel a vytvoříte soubor s názvem single-hotel.php, při zobrazení detailu obsahu Hotel, Wordpress automaticky načte tento soubor, který může být nastylován odlišným způsobem, než zbytek šablony.
Taxonomie
Stejně jako u článků, je možné pro custom post types definovat taxonomie.
Protože jsem v minulém slidu zmiňoval Hotel, můžeme definovat taxonomie pro Hotely.
Počet hvězdiček – hierarchická taxonomie
Poloha – hierarchická taxonomie
Výlety – nehierarchická taxonomie
Rozdíl mezi hierarchickou a nehierarchickou taxonomií, je v tom, že hierarchická se vytváří jako kategorie u článků a dá se přiřazovat jako parent a child. Naproti tomu nehierarchická se chová jako štítky.
Použití custom post types
ŠablonyV šablonách se vlastní typy obsahu používají především v souvislosti se šablonou. Pokud se jedná například o šablonu pro fotografa, který bude prezentovat svou práci, může být součástí šablony Fotogalerie
PluginyPokud logika vytvoření obsahu říká, že by měl být nezávislý na šabloně, je vhodné umístit generování custom post types do pluginu. Příkladem jsou eshopy, realitní pluginy, nebo inzertní pluginy. Osobně jsem příznivcem pluginů.
Příklady použití v šablonách
Portfolio
Faq
Testimonials
Toto je několik z druhů obsahů, se kterými se můžete setkat v šablonách, většinou v prémiových.
Portfolio
Příklad portfolia, jako vlastního obsahu je šablona Enfold z Themeforest
Portfolio detail
FAQ custom post typeFAQ v šabloně Avada
Custom post types v pluginech
Většina nejznámějších pluginů, využívá vlastní druh obsahu.
Woocommerce
WP Property
Events Manager Plugin
Super Carousel
A mnoho dalších
Jsem příznivcem využívání vlastních druhů obsahu v pluginech, protože propojení logiky custom post types se šablonami vás omezuje. Pokud změníte šablonu, odstraníte funkce, které custom post types generují a nebudou se vám zobrazovat.
WoocommerceWoocommerce je nejpoužívanější plugin pro vytvoření eshopu z Wordpressu.
Pro vytvoření produktů a objednávek používá právě custom post types. Díky tomu může být zboží i objednávky odděleny od ostatního obsahu a lze tak pro něj vytvářet vlastní šablony.
Woocommerce detail produktu
Woocommerce kategorie produktuK vlastnímu obsahu lze nadefinovat taxonomie, u Woocommerce produktu to jsou kategorie produktu a štítky produktu
WP Property – realitní plugin
Dalším velmi komplexním pluginem, který využívá custom post types je WP Property. Díky kvalitně zpracovanému způsobu správy vlastního obsahu, dokážete z Wordpressu udělat stránky s pro realitní kancelář.
WP Property - nemovitost
Jak vytvořit vlastní Custom Post Type
Pomocí pluginu:
Custom Post Type UI
Types – Custom Fields and Post Types
Vygenerováním v online generátoru
themergency.com/generators/wordpress-custom-post-types/
generatewp.com/post-type/
Použitím vlastní funkce
Custom Post Type pluginy
Pluginy pro vygenerování vlastních druhů obsahů, nejsou vůbec špatné a nemusíte se tedy prokousávat codexem, aby jste si vytvořili například portfolio.
Nejpoužívanější je Custom Post Type UI, druhým je Types. Na Wordpress.org je jich celá řada, liší se jen v drobnostech.
Online generátoryJe to obdoba pluginů, jedná se o formuláře dostupné online, které vám vygenerují potřebný kód.
http://generatewp.com/post-type/
http://themergency.com/generators/wordpress-custom-post-types/
Použití funkcí
Pomocí funkcí jste schopni vygenerovat jakýkoliv vlastní druh obsahu.
Máte absolutní kontrolu nad kódem, můžete eliminovat to co nepotřebujete.
Vše prefixujte – vytvořte si originální prefix a ten použijte, předejdete konfliktům.
Rezervované názvy, jsou již dříve zmíněné druhy obsahu past, page, atd…
Nepoužívejte názvy
action
order
theme
Register post typeRegister_post_type je funkce, s kterou zaregistrujete vámi zvolený druh obsahu.
Funkci i s jejími argumenty vložíte do funkce, kterou následně zavěsíte do init action hooku.
Použití:
Custom post type - Reference
register_post_type - argumenty labels
description
public
publicly_queryable
show_ui
show_in_menu
show_in_nav_menus
show_in_admin_bar
query_var
can_export
delete_with_user
rewrite
capability_type
capability
has_archive
hierarchical
menu_position
menu_icon
map_meta_cap
supports
exclude_from_search
register_meta_box_cb
taxonomies
Register_post_type - labels
Labels je pole výrazů, které budou k obsahu přiřazeny.
Například pro name Produkty, by singular_name mělo být Produkt, protože se jedná pojmenování jednoho produktu.
Mimo name a singular_name se výrazy zobrazují v administraci, all_items – Všechny reference, new_item – Nová reference, atd…
name
singular_name
menu_name
all_items
add_new
add_new_item
edit_item
new_item
view_item
search_items
not_found
not_found_in_trash
parent_item_colon
Description/public/publicly_queryable
Description je popis vlastního obsahu, nesetkal jsem se s tím, kde by se měl zobrazovat.
Public je argument, který určuje, zda je custom post type „veřejný“. Dokumentace je v tomto bodě nejednoznačná. Pokud je true, měl by umožnit přístup pro public_queryable, show_ui, show_in_nav_menus a exclude_from_search nastaví na false.
Publicly_queryable – argument, který určuje, zda se bude custom post type řadit do parse_request(). Jeho defaultní nastavení záleží na tom, zda je definován. Pokud není, řídí se podle nastavení argumentu public. Pokud tedy neuvedete public, nastaví se oba argumenty na false.
Exclude_from_search / can_export
Exclude_from_search vyloučí definovaný obsah z vyhledávacího dotazu. Defaultně je nastavený na false, tedy je post type vyhledatelný. Opět to závisí na jeho definici, nebo na definici public. Public je nastavený defaultně na false, při neuvedení public a zároveň exclude_from_search, nebude možné post type vyhledat. Při definování public – true, bude exclude_search automaticky false.
Can_export definuje, zde se bude tento druh obsahu moci exportovat. Defaultně nastaveno na true.
Show_ui / show_in_nav_menu
Show_ui určuje, zda se bude pro daný post type zobrazovat nastavení v administraci.
Show_in_nav_menu definuje zobrazování obsahu v navigačních menu.
Oba argumenty jsou přímo závislé na argumentu public. Pokud je public uvedený a nastavený na true, oba argumenty jsou také true. Pokud se vám tedy nezobrazuje custom post type v nabídce menu, zkuste hledat problém zde. Na druhou stranu, pokud definujete show_ui jako false, může být public jaký chce, platí poslední definice.
Show_in_menu / show_in_admin_menu
Show_in_menu určuje, zda se zobrazí post type v postranním menu administrace. Show_ui musí být true, jinak se vám nic nezobrazí.
Pokud bude show_in_menu false, nic neuvidíte, když bude true, zobrazí se klasicky název post type. Můžete však ještě použít třetí parametr a přiřadit menu třeba pod položku tool.
Show_in_admin_menu nastaví zobrazení v horním admin baru, ale závisí na nastavení show_in_menu. Pokud bude false, nice se nezobrazí.
Query_var / hierarchical
Query_var nabízí větší kontrolu nad hodnotou, která bude použita v parse_request().
Defaultně je nastavena na true a post type je tak k dispozici v query var. False obsah znepřístupní pro query, ale je zde ještě třetí hodnota, kterou je string a můžete tak definovat náhradu za ?{post_type_key=post-slug} na ?{co_tady_chci_mit=post-slug}
Hierarchical určuje, zda bude možné post type organizovat do stromové struktury. Obdobně u page, můžete přiřazovat nadřazené stránky.
Rewrite
Rewrite umožňuje definovat strukturu permalinků a má několik hodnot. Může být false, true, nebo array. Nás zajímají hodnoty pole.
Slug – řetězec, který se může překládat. Pokud není uvedený, použije se post type.
With_front – definuje co bude před slug. Pokud bude ‚domy‘, bude ‚reference‘ špatně, správně bude ‚/domy/reference‘
Feeds – určuje, zda bude mít post type feed, tedy archív. Může být false, nebo true.
Pages – určuje, zda bude mít post type stránkování. Opět může být true, nebo false.
Capabilities / capability_type
Capability_type – určuje podle jakého vzoru se bude vytvářet možnost úprav. Můžete vytvořit capability_type pro array(‚projekt‘,‘projekty‘), nebo jen pro string – ‚projekt‘.
Capabilities – umožňuje definovat jednotlivé capabilities pro jednotlivé úkony. Například ‚edit_post‘ => ‚edit_reference‘. Tím přiřadíte odpovídající možnost pro úpravu post type. Pak můžete jednotlivým uživatelským rolím nadefinovat přístup k tomuto post type.
Možné capabilities - edit_post, read_post, delete_post, edit_posts, edit_others_posts, publish_posts, read_private_posts.
Has_archive / register_meta_box_cbHas_archive definuje, že post type má archív. Tedy, že jej bude možné zobrazovat jako výpis kategorie, nebo archív článků.
Register_meta_box_cb nastaví, že u edit formuláře, tam kde budete post type vytvářet a upravovat, můžete nadefinovat meta box.
Menu_icon / menu_position
Menu_icon je url adresa ikonky, která se má zobrazit u položky v menu administrace.
Menu_position – nastaví pozici položky v administračním menu. Defaultně bude umístěna pod komentáře.
5 – pod Články
10 – pod Knihovnu médií
15 – pod Odkazy
20 – pod Stránky
25 – pod Komentáře
60 – pod první oddělovač
65 – pod Pluginy
70 – pod Uživatele
75 – pod Nástroje
80 – pod Nastavení
100 – pod druhý oddělovač
Supports
Supports určuje, co vše bude definovaný post type podporovat.
V základu to je pouze title a editor.
Title
Editor
Author
Thumbnail
Excerpt
Trackbacks
Custom-fields
Comments
Revision
Page-attributes
Post-formats
Taxonomies
Pole registrovaných taxonomií, protože je stejně nutné vlastní taxonomie registrovat, uvádím jen pro úplnost.
Defaultní je bez taxonomií.
Funkce register_taxonomy
Register_taxonomy je funkce, která umožňuje vytvořit vlastní taxonomii a přiřadit ji k druhu obahu.
Zápis funkce je
register_taxonomy(‚druh_reference‘,‘reference‘,array(argumenty));
Druh reference je name(slug) taxonomie, reference je custom post type, pro kterou je taxonomie určená. Třetí argument je pole, jehož hodnoty si popíšeme.
Label a LabelsLabel je název taxonomie, který se bude zobrazovat v administraci. Lze překládat.
Labels jsou všechny názvy, které mohou být použití při popisu taxonomie. Obdobně jsou i labels pro custom post type.
name
singular_name
menu_name
all_items
edit_item
view_item
update_item
add_new_item
new_item_name
parent_item
parent_item_colon
search_items
popular_items
separate_items_with_commas
add_or_remove_items
choose_from_most_used
not_found
Obdobné argumenty jako u post typeNěkteré argumenty a jejich použití je podobné jako u funkce register_post_type. Zde je jejich seznam.
public
show_ui
show_in_nav_menus
meta_box_cb
hierarchical
query_var
rewrite
capabilities
Sort/update_count_callback/show_admin_column
Sort určuje, zda si bude taxonomie pamatovat pořadí, v jakém budou položky přidávány.
Update_count_callback, pomocí tohoto argumentu můžete definovat funkci, která bude volána při změně počtu přiřazeného obsahu. U kategorií můžete vidět počet článků v dané kategorii.
Show_admin_column určuje, zda se automaticky vytvoří položka taxonomie v tabulce výpisu custom post type.
Show tag cloud
Show_tagcloud definuje, zda bude pro taxonomii vytvořen mrak štítků.
Děkuji vám za pozornost
Vladislav Musílek
Web: Musilda.cz
Email: [email protected]
Twitter: @vladamusilek
Google+: +MusilekVladislav
Linkedin: vladislav-musílek