WordPress Custom post types – variabilná administrácia obsahu #1

By | 30. septembra 2010

Z WordPressu sa konečne stáva plnohodnotné (resp. plnohodnotnejšie) CMS. Vo verzii 3 tento obľúbený systém prináša tzv. Custom post types. Teraz si môžete vytvoriť prakticky akúkoľvek novú „sekciu“ administrácie a lepšie tak oddeliť obsah. Tak isto si môžete vytvoriť ľubovolnú taxonomy, takže súčastné kategórie a tagy môžete rozšíriť o ďalšie možnosti. Dnes si ukážeme praktické využitie týchto skvelých funkcií v praxi.

Článok si nebude zakladať na profesionálnej odbornosti termínov, z vysvetlenia bude jasne vyplývať, čo je na čo, takže veční frfľoši dajte si odpich :-).

Jednoduchá databáza filmov na WordPresse

Skúsime vytvoriť peknú administráciu pre jednoduchú databázu filmov, niečo na spôsob csfd.cz, alebo imdb.com. Zvládnuť Custom post types a taxonomies môžeme dvomi spôsobmi, buď cestou manuálneho „programovania“, alebo s využitím overených pluginov. V tomto článku sa zameriam na druhú spomenutú možnosť. Samozrejme využijeme aj nejaké to programovanie, pre výpisy a úpravu šablóny. Upravovať budeme default šablónu Twenty Ten, na náš ilustračný účel bohate postačí. Vitajte v prvej časti „návodu“ na zvládnutie Custom Post Types.

1. Aké „ingrediencie“ budeme potrebovať?

Vopred upozorňujem, že je možné, že v budúcnosti bude mať WordPress kompletnú „funkcionalitu“, ktorú nám teraz poskytujú (resp. zjednodušujú) uvedené pluginy.

Nainštaľujte si WP, pridajte do neho pluginy, aktivujte ich a môžeme ísť na to.

2. Nastavenie pluginov

GD Custom Posts And Taxonomies Tools

Plugin má vlastne submenu v ľavom menu (úplne na spodku). V ponuke Post Types na začiatku vidíte len štandardné Default Post Types, my potrebujeme vytvoriť nový typ, takže nasleduje Add New.

Záznam vyplnte podľa nasledujúceho obrázku. Name je unikátne, píšte ho bez medzier a špeciálnych znakov, nesmie sa zhodovať s name iného custom post type alebo taxonomie. Labels sú prakticky len popisky, v sekcii settings nás budú zaujímať features a taxonomies. Hierarchical je nastavené na no, keďže náš custom post type film bude niečo ako post a nie page (tie sú hierarchické). Čo všetko si nastavíte do Features, to je na vás (vychádzame však z toho, čo je na obrázku).


Všimnite si prázdneho boxu Taxonomies. Do neho pribudnú custom taxonomies, ktoré vytvoríme o chvíľku.

Na nasledujúcom obrázku môžete vidieť, ako to bude vypadať v sekcii Post Types po vytvorení nášho custom post typu film.


Do sekcie Post Types sa ešte vrátime.

Teraz sa na chvíľku presunieme do sekcie Taxonomies (v ľavo v menu GD CTP Tools pod Post Types). Tu môžete vidieť Default Taxonomies – štandardne katagórie, tagy, navigačné menu (vo WP3 nové) a kategórie linkov.

My si potrebujeme spraviť naše vlastné taxonomie, ktoré sa hodia k filmom. Vytvoríme si taxonomies pre hercov, režisérov, rok a žáner filmu. Položka name opäť musí byť unikátna. Všimnite si kolonku Post Types, do tejto už priraďujeme náš nový Post Type – Filmy

Custom Taxonomies – Herci:

Custom Taxonomies – Režiséri:

Custom Taxonomies – Rok:

Custom Taxonomies – Žánre filmu:


Tu nezabudnite nastaviť Hierarchical: Yes, žánre budú kategórie (a tie sú hierarchické), nehierarchické sú akoby tagy.

Vo výsledku bude vypadať sekcia Taxonomies takto:

Ako som už spomínal hore, teraz sa vrátime do sekcie Post Types. Tu si zeditujte Post Type film, ktorý sme vytvorili hore. Do kolonky Taxonomies (pod Features v sekcii Settings) zakliknite čerstvo vytvorené taxonomie – Herci, Režiséri, Rok, Žánre filmov, tak ako na nasledovnom obrázku.


Naše nové custom taxonomies priradíme k novému Post Type film.

Tým nastavenia v plugine GD Custom Posts And Taxonomies Tools končia.

3. Nastavenie permalinkov

Teraz sa presunieme v administrácii v menu do Settings -> PermalinksCustom Structure nastavte na /%category%/%postname%/ a Custom Permalink for Filmy na /film/%film%/. Zmeny uložte. Nezabudnite, že zmeny sa do .htaccess neuložia, pokiaľ nie je tento súbor nastavený na zapisovanie. Ak nie je, WordPress vygeneruje kód, ktorý do súboru .htaccess musíte vložiť manuálne. Nastavenie permalinks by malo byť rovnaké, ako na obrázku:


Vždy keď zmeníte niečo v Custom Post Types alebo Taxonomies, vždy si refreshnite alebo uložte nastavenia v Settings -> Permalinks. Neviem či je to bug, alebo je to tak vo WP 3 schálne.

4. Napĺňanie obsahom

Teraz sa už môžete pokochať novým menu v administrácii „Filmy“ a jeho obsahom.


Aj takto môže vyzerať editáciu nového filmu, v našej databáze.

Ako vidíte, herci, režiséri a rok sú akoby staré známe tagy, kdežto žánre filmov sú akoby kategórie. Ak by ste všetky tieto dáta napĺňali do custom fieldov, nasledovný výpis filmov by bol oveľa zložitejší a neprehľadnejší. Mimochodom, funkciu Featured Image si ukážeme nabudúce (spolu s ďalšími funkciami).

5. Úprava šablóny, frontend, vylistovanie filmov

Ako som už spomínal na začiatku, zeditujeme šablónu Twenty Ten. Niektoré veci som vyhodil, pretože pre náš účel neboli podstatné. Editované súbory si môžete stiahnuť zbalené tu.

Výpis filmov v index.php:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args=array(
 'posts_per_page' => 10,
 'post_type'=>'film',
 'post_status'=>'publish',
 'paged'=>$paged,
);
query_posts($args);

Tento kus kódu hodíme ešte pred klasický if (have_posts()) : while (have_posts()) : the_post();

Čo je v tomto prípade nové? No hlavne post_type, cez ktorý určujeme, aký post type sa má zobraziť. V našom prípade je to film. Listovanie je zabezpečené cez paged (pri výpise archív ho nebudeme musieť používať). Ostatné je myslím jasné.

Výsledok môže vyzerať takto.

Výpis konkrétneho filmu – single-post-type.php:

Všetci isto poznáme single.php, cez ktorý sa vypisujú konkrétne posty. WP 3 prináša novú vlastnosť, šablónu single, priradenú konkrétnemu Custom post type. V našom prípade to bude single-film.php. Pokojne si môžeme skopírovať pôvodný single.php z Twnety Ten a vytvoriť single-film.php. Ten obohatíme o naše nové custom post types – režiséra, rok, hercov a žáner.

<?php
$kategorie = get_the_terms($post->ID,'zaner');
if (!empty($kategorie)) {
 ?><p style="margin:0"><?php echo get_the_term_list( $post->ID, 'zaner', '', ', ', '' );?></p><?php
}
$reziser = get_the_terms($post->ID,'reziser');
if (!empty($reziser)) {
 ?><p style="margin:0"><strong>Režisér:</strong> <?php echo get_the_term_list( $post->ID, 'reziser', '', ', ', '' );?></p><?php
}
$herec = get_the_terms($post->ID,'herec');
if (!empty($herec)) {
 ?><p style="margin:0"><strong>Herci:</strong> <?php echo get_the_term_list( $post->ID, 'herec', '', ', ', '' );?></p><?php
}
$rok = get_the_terms($post->ID,'rok');
if (!empty($reziser)) {
 ?><p><strong>Rok:</strong> <?php echo get_the_term_list( $post->ID, 'rok', '', ', ', '' );?></p><?php
}
?>

Výsledok môže vyzerať takto.

Na dnes stačilo. Dúfam, že sa vám článok páčil a obohatil vašu prácu s WordPressom. Ak by ste mali nejaké pripomienky prípadne našli chyby, komentáre sú vám k dispozícii. Záverom by som rád poďakoval JohnnyPea, za rady a pomoc v tejto oblasti.

V budúcom pokračovaní si vysvetlíme výpisy jednotlivých taxonomies a ďalšie voliteľné výpisy, pohráme sa s obrázkami a profilmi hercov a režisérov.

4 thoughts on “WordPress Custom post types – variabilná administrácia obsahu #1

  1. luqash

    Pekny clanok! Mam otazku z praxe. Ked robis web pre klienta vo WordPresse tak custom type robis len cez ten plugin alebo ho vytvoris rucne v PHP?

    Ma ten plugin aj niejaku funkciu export, ktory mi vyhodi priamo PHP kod, ktory vlozim do functions.php?

    Reply
  2. mekelle

    Veľmi zaujímavý návod. Myslím, že by to bolo použiteľné aj na mojej stránke o genealógii http://www.geni.sk kde miesto hercov, režisérov a podobne by som pracoval s menami predkov, miestami, kde žili a podobne. Vďaka za inšpiráciu!

    Reply
  3. Pingback: Tweets that mention Wordpress Custom post types – variabilná administrácia obsahu #1 -- Topsy.com

Napísať odpoveď pre exot Zrušiť odpoveď