Custom Post Type készítése WordPressben előnézeti képe

Custom Post Type készítése WordPressben

| Olvasási idő: 2 perc

Előbb vagy utóbb mindenki kinövi a sima, alap WordPress bejegyzés + oldal kombinációt: szeretnél egy olyan bejegyzéstípust, aminél van cím, de nincs tartalom, de legyen ott három plusz mező, abból egyben pipálni lehessen, kettő másiknál meg szöveges adatot adhasson meg. Tudom, erre is van plugin: "480" oldalnyi (bár itt a custom szó azért megnyomja a találatokat rendesen, ezért is az idézőjel), de azért nézzünk erre egy jófajta #plugout-os megoldást. 

Ahogy már megszokhattuk, hozzunk létre egy fájlt (mondjuk unicorn-custom-post-type.php néven) az mu-plugins mappánkban, a következő tartalommal: 

php
<?php
/*
Plugin Name: Unicorn CPT plugin
Plugin URI: https://www.webmenedzser.hu
Description: Unicorn CPT plugin
Version: 1.0
Author: Radics Ottó
Author URI: https://www.webmenedzser.hu
License: GPL2
*/

function unicorn_cpt() {

    // Set labels for CPT
    $labels = array(
        'name'                      => _x( 'Unikornisok', 'plugout_cpt' ),
        'singular_name'             => _x( 'Unikornis', 'plugout_cpt' ),
        'menu_name'                 => __( 'Unikornisok', 'plugout_cpt' ),
        'parent_item_colon'         => __( 'Szülő Unikornis', 'plugout_cpt' ),
        'all_items'                 => __( 'Minden Unikornis', 'plugout_cpt' ),
        'view_item'                 => __( 'Unikornis megtekintése', 'plugout_cpt' ),
        'add_new_item'              => __( 'Új Unikornis hozzáadása', 'plugout_cpt' ),
        'add_new'                   => __( 'Új hozzáadása', 'plugout_cpt' ),
        'edit_item'                 => __( 'Unikornis szerkesztése', 'plugout_cpt' ),
        'update_item'               => __( 'Unikornis frissítése', 'plugout_cpt' ),
        'search_items'              => __( 'Unikornis keresése', 'plugout_cpt' ),
        'not_found'                 => __( 'Nincsenek Unikornisok.', 'plugout_cpt' ),
        'not_found_in_trash'        => __( 'A Lomtár üres', 'plugout_cpt' )
    );

    // Set other options for Custom Post Type
    $args = array(
        'label'                     => __( 'Unikornis', 'plugout_cpt' ),
        'description'               => __( '"Annyira cuki, hogy belehaloook!" :)', 'plugout_cpt' ),
        'labels'                    => $labels,
        'supports'                  => array( 'title', 'thumbnail' ),
        'hierarchical'              => false,
        'public'                    => true,
        'show_in_nav_menus'         => true,
        'show_in_admin_bar'         => true,
        'menu_position'             => 3,
        'has_archive'               => "unicorns",
        'exclude_from_search'       => false,
        'publicly_queryable'        => true,
        'menu_icon'                 => 'dashicons-star-filled'

    );

    register_post_type( 'unicorn', $args );
}
add_action( 'init', 'unicorn_cpt' );

Ez egy jó hosszú snippet, csak nagy vonalakban nézzük, hogy mi mit csinál:

Az első 11 sor magától értetődik (ezek kommentek), a 12. sorban definiálunk egy függvényt, unicorn_cpt néven, a 14-50. sorok közötti tartalommal. Az 52. sorban a WordPress init hookjára "rákötjük", tehát akkor meghívódik és lefut.

Az 50. sorban regisztráljuk az egyedi bejegyzéstípusunkat, az $args paraméterben meghatározott jellemzőkkel. Az $args tartalmát feljebb, a 33. sorban definiáljuk:

  • label: a post type címkéje, fordításra kész formában (mindegyik string fordításra kész, ezért ezt a továbbiakban nem jelzem).
  • description: leírás, ami a post type archive oldalán jelenik meg, ha a sablon támogatja.
  • labels: ez a különféle szöveges elemek értékeit tartalmazza, l. a 15-29. sorokat.
  • supports: ez egy tömb, melyben azokat a feature-öket soroljuk fel, melyeket a CPT-nk támogat. Jelenleg a címet és a kiemelt képet támogatja a bejegyzéstípusunk. A teljes listáért lásd a register_post_type Code Reference oldalt.
  • has_archive: van-e archívum oldala a CPT-nek? Ha ez false, akkor nincs, ha valamilyen string, akkor automatikusan legenerálja hozzá a rewrite rule-okat is és elérhetővé teszi azon a címen. (tehát ebben az esetben ez a /unicorns)
  • menu_icon: melyik ikont használja az itt elérhető ikonok közül

A többi paraméterrel finomhangolhatod a custom post type-odat, viszont ezekre nem térek ki. Ha érdekel, itt utána tudsz nézni.

Unicorn

Gratulálok! Létrehoztad az első Custom Post Type-odat. Ugye, hogy nem volt nehéz? ;) 

Ahogy megszokhattátok, következzen Barna, aki videóban mutatja be a folyamatot: