• Ugrás az elsődleges navigációhoz
  • Skip to main content
  • Ugrás a lábléchez
Weart.hu

Weart.hu

Egyed Balázs, Web és WordPress fejlesztő (8+ év tapasztalattal)

  • Rólam
  • Legutóbbi Projektek
  • Blog
  • Kapcsolat
Főoldal > Programozás

Hogyan készíts Custom Post Type-ot WordPress alatt?

ÍrtaEgyed Balázs Publikálva június 12, 2021 BeszélgetésSzólj hozzá!

Amikor feltelepítjük a WordPress-t csak három beépített tartalom típust kapunk: bejegyzések, oldalak és média. Azonban mára a WordPress meglehetősen flexibilissé és fejletté vált, így lehetőség nyílik Custom Post Type-ok létrehozására.

Bár első mondatban felvázolt bőven elegendő egy bloghoz, de a változatos és a mai leggyakoribb igények kiszolgálásához alap bejegyzéstípusok sokszor nyújtanak elég szabadságot, és itt jön a képbe a Custom Post Type fogalma.

Mi az a WordPress Custom Post Type?

A Custom Post Type-ok segítségével mutatja meg a WordPress az igazi erejét és válik egy igazi tartalomkezelő rendszerré. Ahogy a név is sugallja a segítségéve egyedi tartalomtípusokat hozhatunk létre.

Bár a cikk bevezetőjében azt mondtam, hogy alapjáraton háromféle tartalomtípussal jön a WordPress, ez így nem teljesen igaz. Három tartalomtípus van, amit látunk, de a motorháztető alatt több Post Type-al is dolgozik a rendszer:

  • Post – főleg blogbejegyzésekhez használhatóak
  • Page – statikus oldalak
  • Revision – a fentiek változásait tárolja több verzióban
  • Navigation – navigációs menük
  • Attachment – leggyakrabban a képekhez készül automatikusan

Ezekről továbbiakban nem is ejtenék szót, de a teljesség kedvéért felsoroltam őket. Ha érdekelnek bővebben akkor a custom post type rész dokumentációját a WordPress hivatalos oldalán.

A WordPress nem limitálja a létrehozható Custom Post Type-ok számát, ráadásul a bennük lévő bejegyzések száma is korlátlan. Így az alap Post Type-okat kibővíthetjük mondjuk egy portfolió, vagy vélemények elemmel, amiket aztán akárhol listázhatunk a weboldalon.

Készítsünk Custom Post Type-ot a WordPress-hez

Több módja is van annak, hogy egyedi tartalomtípust hozzunk létre, az egyik legegyszerűbb a CPT UI nevű bővítmény. Ezzel a minden apró részletet beállíthatunk, és megadhatjuk az összes tulajdonságot.

De ehhez egy külön plugint kellett telepíteni, amit könnyedén ki is tudunk kerülni egy kis kódolással. Ez azért jó, mert nem kell erőforrást áldoznunk a plugin futtatására, és nem hagyunk plusz biztonsági rést egy esetleges frissítés csúszásáért.

Jelenleg a Custom Post Type készítésének legegyszerűbb megközeléítését fogom bemutatni így a functions.php-ban fogunk dolgozni.

Adjuk is hozzá az alábbi kódot a functions.php aljához:

/* Custom Post Type Start */
function weart_create_posttype() {
    register_post_type( 'news',
        // beállítások
        array(
            'labels' => array(
                'name' => __( 'Referenciak' ),
                'singular_name' => __( 'Referencia' )
            ),
            'public' => true,
            'has_archive' => false,
            'rewrite' => array('slug' => 'referenciak'),
        )
    );
}
// Hook a WordPress-hez
add_action( 'init', 'weart_create_posttype' );
/* Custom Post Type End */

A kód hozzáadása után a Referencia Post Type automatikusan megjelenik a WordPress admin felületen. Ebben a menüpontban pontosan ugyanúgy fogod tudni kezelni a bejegyzéseket mintha a beépített Bejegyzések menüpontot használnád.

Az alábbi képen láthatod hogyan fog kinézni:

Referencia Custom Post Type menüpont
Új Referencia menüpont jelenik meg.

Amikor egyedi tartalomtípust hozunk létre mindenképpen egy init-es add_action()  hook segítségével kell megtennünk, amiben egy register_post_type() függvényt hívunk meg a megfeleló argumentumokkal.

Én ezeket a fenti példában összevontam és csak a legszükségesebbeket állítottam be, de lehetőség van sokkal több beállítás megadására is:

/*Custom Post type start*/
function weart_post_type_referencia() {

    // támogatott postelemek
    $supports = array(
        'title', // cím
        'editor', // tartalom
        'author', // szerző
        'thumbnail', // kiemelt kép
        'excerpt', // kivonat
        'custom-fields', // custom fields
        'comments', // hozzászólások
        'revisions', // tárolt változatok
        'post-formats', // formátumok (kép,idézet, video...)
    );

    $labels = array(
        'name' => _x('referenciak', 'plural'),
        'singular_name' => _x('referencia', 'singular'),
        'menu_name' => _x('referenciak', 'admin menu'),
        'name_admin_bar' => _x('referenciak', 'admin bar'),
        'add_new' => _x('uj hozzaadasa', 'add new'),
        'add_new_item' => __('uj referencia hozzaadasa'),
        'new_item' => __('uj referencia'),
        'edit_item' => __('referencia szerkesztese'),
        'view_item' => __('megnézem az elemet'),
        'all_items' => __('minden referencia'),
        'search_items' => __('referencia keresése'),
        'not_found' => __('nem talalhato referencia.'),
    );

    $args = array(
        'supports' => $supports,
        'labels' => $labels,
        'public' => true,
        'query_var' => true,
        'rewrite' => array('slug' => 'referenciak'),
        'has_archive' => true,
        'hierarchical' => false,
    );

    register_post_type('referencia', $args);
}
add_action('init', 'weart_post_type_referencia');
/*Custom Post type end*/

Én ezeket a fenti példában összevontam és csak a legszükségesebbeket állítottam be, de lehetőség van sokkal több beállítás megadására is:

  • $supports: Azok az elemek amik támogatottak lesznek a Post Type-ban.
  • $labels: Milyen feliratokkal jelenjen meg a tartalomtípus? Én a példában nem csináltma fordíthatóra, de természetesen többnyelvűsíthetőek a feliratok.
  • $args: Megadhatjuk a menü pozicióját és egyéb beállításait.

Ha mindent jól csináltunk akkor jelen pillanatban ott tartunk, hogy van egy működő egyedi tartalomtípusunk, ami pontosan úgy viselkedik, mint egy „gyári” tartalomtípus. Nem mellesleg eddig a pontig tudtunk volna eljutni kódolás nélkül a CPT UI plugin használatával is.

Listázzuk ki a Custom Post Type-okat

Innentől már csak az a dolgunk, hogy hozzáadjunk tartalmakat majd megjelenítsük azt a sablonunkban.

Alapjáraton a legtöbbször nem tartalmi oldalakat, tehát nem új bejegyzéseket akarunk létrehozni, hanem egy listát szeretnénk az egyedi tartalmainknak. Persze egy archívum oldal alapból képződik hozzájuk, jelen esetben:

domain.hu/referenciak

A lényeg azonban az lenne hogy ott jelenítsük meg egy loop segítségével ahol csak szeretnénk. A mostani Referenciás példában is egy listát szeretnék megjeleníteni a referenciáimmal, amiben van egy kép és egy név.

Szerencséra akárhol megjeleníthetjük őket egy egyszerű wp_query-vel.

<?php 
$args = array( 
    'post_type' => 'referenciak', 
    'posts_per_page' => 10 
);
$the_query = new WP_Query( $args ); 

if ( $the_query->have_posts() ) : 
    while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
        <h2><?php the_title(); ?></h2>
        <div class="entry-content">
            <?php the_excerpt(); ?> 
        </div>
    <?php endwhile; wp_reset_postdata();
endif; 
?>

Egyedi kinézet az egyedi tartalomhoz

Ha mégis szükség lenne arra, hogy egyesével is megjelenítsük őket egy külön sablondizájnnal, mert mondjuk egy esettanulmányt rejt a belseje, akkor csak létre kell hozni egy single-referenciak.php fájlt a gyökérkönyvtárban.

Ezt a WordPress alapból fel fogja ismerni, és használni fogja a Referencia Post Type megjelenítéséhez. Különleges kódot nem igényel, úgy kell vele bánni, mintha egy sima single.php fájlt programoznánk.

Összefogalva

Most, hogy megtanultuk a Custom Post Type-ok használatát a WordPress-ben számottevően komplexebb oldalakat tudunk majd készíteni, amik nem mellesleg sokkal jobban struktúráltak.

Sokkal összetettebb megjelenést tudunk készíteni, amellett, hogy a weboldal szerkesztőjét nem terheljük feleslegesen új funkciók megtanulásával. Az Ő szemszögéből ugyanis nem történik változás a szerkesztő használatában, hiszen ugyanazt a bejegyzésszerkesztőt fogja használni, amit eddig is megszokott.

Tipp: Ügyeljünk rá, hogy ezeket az egyedi tartalomtípusokat a sablonunkhoz rendeltük, ami sablonváltáskor okozhat zavarokat. Érdemes elhet egyedi pluginbe kiszervezni őket hogy elkerüljük ezeket a kellemetlenségeket.

Programozás WordPress

Egyed Balázs

Egy szabadúszó WordPress programozó, fejlesztéseit több mint 50 országan és többszáz weboldalon használják. Az elmúlt 8 évben vállalkozásokkal, kiadókkal, webshopokkal dolgozott együtt, egyedi weboldalakat épített az igényeiknek és céljaiknak megfelelően.

Készen állsz a weboldald fejlesztésésre?

Egyedi WordPress weboldalakat építek, amik jól néznek ki és könnyen kezelhetőek.

Beszélgessünk

További cikkek ebben a sorozatban

Hogyan lehet dinamikusan elkérni a WooCommerce oldal URL-eket?

A egy webshop fejlesztése során számítani kell kell arra, hogy a WooCommerce oldal URL-ek megváltozhatnak. Ezeket pedig le kell tuni kezelni.

WordPress alapok: Belépés az adminba, Logó és alapvető adatok szerkesztése

A WordPress egy fantasztikus tartalomkezelő rendszer, amit a világ weboldalainak több mint 35%-a használ főként azért, mert felhasználóbarát és egyszerű kezelni. Így az általam készített oldalak is ezen a platform felhasználásával készülnek.

WordPress menü szerkesztése. Hogyan csináld?

A WordPress rendszernek kezdetektől az az elve, hogy aminek a szerkesztését lehet azt a felhasználók kezébe kell adni. Ennek az elvnek az ékes bizonyítéka a WordPress menü szerkesztése funkció.

Teljes WordPress SEO útmutató kezdőknek (lépésről lépésre)

Turbózni akarod a WordPress SEO-dat? Itt egy mindenre kiterjedő útmutató a legjobb SEO taktikákhoz. Minden egyben amit a WordPress SEO-ról tudnod kell.

Ajándék könyv a weboldal készítésről

  • Ez a mező az érvényesítéshez van és üresen kell hagyni.

Reader Interactions

Vélemény, hozzászólás? Válasz megszakítása

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Footer

Friss bejegyzések

  • Hogyan készíts Custom Post Type-ot WordPress alatt?
  • Hogyan lehet dinamikusan elkérni a WooCommerce oldal URL-eket?
  • 3 indok, hogy miért ne használj másolásvédelem funkciót a weboldalon
  • WordPress vs. ingyenes weboldal készítő szoftverek

Kategóriák

  • Egyéb
  • Programozás
  • Weboldal készítés
  • WooCommerce
  • WordPress

Oldalak

  • Egyedi Weboldalak
  • Kész Weboldalak
  • Legutóbbi Projektek
  • Rólam

Kapcsolat

  • E-mail
  • Facebook
  • Github

Copyright © 2019–2023 · Adatvédelmi irányelvek · Sütik kezelése