Uvod

WordPress custom post type je svaki tip koji nije neki od 5 defaultnih post tipova:

  • Post (Post Type: ‘post’)
  • Page (Post Type: ‘page’)
  • Attachment (Post Type: ‘attachment’)
  • Revision (Post Type: ‘revision’)
  • Navigation menu (Post Type: ‘nav_menu_item’)

Da bi napravili novi wordpress tip potrebno je da napravimo custom funkciju koja će da aktivira opciju u admin panelu sa našim specifičnim zahtevima. Celokupna custom funkcija se u suštini zasniva na register_post_type() funkciji.

Funkcija register_post_type()

$post_type
je ime koje koristi wordpress tzv. machine name, ne sme sadržati velika slova ili spaces

$args je niz argumenata koji definišu novi post type.
Neki argumenti koji se često koriste su:

  • label je naziv (u množini) koji se pojavljuje na admin stranici spremno za prevodjenje
  • labels je niz su nazivi koji se koriste u toj vrsti custom post-a
    • name’ – general name for the post type, usually plural. The same as, and overridden by $post_type_object->label
    • singular_name’ – name for one object of this post type. Defaults to value of ‘name’.
    • menu_name’ – the menu name text. This string is the name to give menu items. Defaults to a value of ‘name’.
    • name_admin_bar’ – name given for the “Add New” dropdown on admin bar. Defaults to ‘singular_name’ if it exists, ‘name’ otherwise.
    • all_items’ – the all items text used in the menu. Default is the value of ‘name’.
    • add_new’ – the add new text. The default is “Add New” for both hierarchical and non-hierarchical post types. When internationalizing this string, please use a gettext context matching your post type. Example: _x('Add New', 'product');
    • add_new_item’ – the add new item text. Default is Add New Post/Add New Page
    • edit_item’ – the edit item text. In the UI, this label is used as the main header on the post’s editing panel. The default is “Edit Post” for non-hierarchical and “Edit Page” for hierarchical post types.
    • new_item’ – the new item text. Default is “New Post” for non-hierarchical and “New Page” for hierarchical post types.
    • view_item’ – the view item text. Default is View Post/View Page
    • search_items’ – the search items text. Default is Search Posts/Search Pages
    • not_found’ – the not found text. Default is No posts found/No pages found
    • not_found_in_trash’ – the not found in trash text. Default is No posts found in Trash/No pages found in Trash.
    • parent_item_colon’ – the parent text. This string is used only in hierarchical post types. Default is “Parent Page”.
  • description opis
  • public je opcija koja kontroliše vidljivost autorima i čitaocima sajta, i dirkektno utiče na druge parametre exclude_from_search, publicly_queryable, show_in_nav_menus, i show_ui jer daje njihovu default vrednost.
    To je boolen-ova vrednost pa može biti:

    • true’ The built-in types attachment, page, and post are similar to this.
    • false’ The built-in types nav_menu_item and revision are similar to this. Best used if you’ll provide your own editing and viewing interfaces (or none at all).
  • menu_position
    • 5 – below Posts
    • 10 – below Media
    • 15 – below Links
    • 20 – below Pages
    • 25 – below comments
    • 60 – below first separator
    • 65 – below Plugins
    • 70 – below Users
    • 75 – below Tools
    • 80 – below Settings
    • 100 – below second separator
  • menu_icon može biti:
    • url do ikone npr. ‘get_template_directory_uri().”/images/cutom-posttype-icon.png”‘
    • ime ikone iz iconfont-a npr. ‘dashicons-video-alt’
  • supports je boolen-ov niz
    • ‘title’
    • ‘editor’ (content)
    • ‘author’
    • ‘thumbnail’ (featured image, current theme must also support post-thumbnails)
    • ‘excerpt’
    • ‘trackbacks’
    • ‘custom-fields’
    • ‘comments’ (also will see comment count balloon on edit screen)
    • ‘revisions’ (will store revisions)
    • ‘page-attributes’ (menu order, hierarchical must be true to show Parent option)
    • ‘post-formats’ add post formats

      Proveriti da li su prethodno obezbedjene podrške za osobinu na nivo theme pre nego što uradimo podršku na nivou custom post tipa!

  • has_archive je boolen-ova vrednost koja aktivira post type archives, pa će se koristiti $post_type kao archive slug po defasult-u.

Custom post type kroz primere

Osnovno jednostavno korišćenje:

ili kompletan primer:

NAPOMENA:
Ukoliko se nakon registrovanja post tipa pojavi greška tipa 404, potrebno je u Settings/Permalinks uraditi Save Changes.

Adaptiranje teksta u admin interfejsu

Promena default poruka koje wordpress aktivira nakon nekih radnji korisnika se lako može promeniti koristeći post_updated_message udice kao u sledećem primeru.

Ili slično:

Pomoćni tekst za objašnjenja

slika

slika ×

Da bi se olakšalo korišćenje custom post tipova može da se napravi help tab koji bi se pojavljivao u admin stranici na dva “mesta”

  • kada pregledamo listu sa svim custom post tipovima
  • kada editujemo jedan custom post tip

Ovakav help meni se dobija ugradjivanjem custom funkcije u functions.php a koja se aktivira sa akcionom udicom contextual_help. Na sledećem primeru je kod za help meni na admin strani za custom post type movie:

slika

slika ×

U prethodnom primeru help tab sa svojim tekstom za pomoć će se pojaviti u dve različite prilike i sadržaće različite prateće tekstove. Dok smo u Admin stranici i kada:

  1. pregledamo svie postove ovoga tipa
    (deo u kodu kada je korišćeno ‘movie’ == $screen->id)
  2. editujemo pojedinačni post
    (deo u kodu kada je korišćeno ‘edit-‘movie” == $screen->id )

Ukoliko želimo da imamo više tabova i želimo da bude pripemljeno za prevodjenje koristićemo kod kao u sledećem primeru:

Šabloni za Custom Post Type

Prikazivanje jednog člana

Za prikazivanje jedanog člana posebnog tipa se koristi šablon single.php, ali ako postoji potreba da se prikazuje drugačije od običnog single post-a moramo napraviti poseban šablon sa imenom single-NazivTipa.php.

Prikazivanje liste

Za prikazivanje listi posebnih tipova se po default-u koristi standardni šablon archive.php a ako želimo da to bude specifičnije onda koristimo šablon pod nazivom archive-NazivTipa.php

NAPOMENA:
Da bi se u navigaciji napravio meni-link koji otvara listu sa svim postovima tipa custom type, koristićemo opciju custom link gde ćemo za URL staviti http://domen.com/NazivCustomPostType.

Objašnjenje na primerima

Ukoliko je npr. custom post tip “filmovi”, sledi da kada želimo prikaz jednog filma (npr. “Terminator”) WP će koristiti šablon single-filmovi.php ali ako želimo da prikažemo sve filmove unete kroz custom post tip koristi se šablon archive-filmovi.php.

Prikazivanje Custom post type

Prikazivanje zajedno sa standardnim postovima

Jedna od prednosti custom post tipova je što su odvojeni od “običnih” postova tj. prikazuju se na blog stranici zajedno sa “običnim” postovima. Ali ukoliko nam je ipak želja da ih spojimo moramo da koristimo sledeći kod:

U prethodnom kodu se koristi akciona udica pre_get_posts koja se poziva posle stvaranja $query objekta ali pre nego što je startovan u petlji. Stoga će se u trenutku kada deluje naša udica aktivirati kod koji objektu $query dodaje novi custom post tip “movie” zajedno sa standardnim post-ovima.

Pojavljivanje u nekom šablonu

Ukoliko želimo da prikažemo listu našeg custom post tipa u okviru nekog šablona, onda se koristi custom loop:

Prikazivanje u widget area

Da vi prikazali listu skorašnjih custom post tipova koristićemo plugin “Ultimate Post Widget” koji nakon aktiviranja i stavljanja kao widget-a u sidebar omogućava da vidite skorašnje postove bilo kog tipa.

Podelite:

Ostavite komentar