CPT (Custom Post Type) in WordPress

Pentru majoriteatea proiectelor cu WordPress folosesc cel putin un CPT (Custom Post Type). De cand a fost introdus CPT, viata e mult mai usoara. WordPress are functii la indemana prin care putem destul de usor sa folosim propriile categorii, taxonomies, meta boxes.

De ce sa folosesti CPT?

Pentru ca sunt foarte misto! Dupa introducerea CPT WordPress a devenit un CMS (content management system – sistem de management al continutului) in adevaratul sens al cuvantului. Inainte, era mai mult sau mai putin o unealta pentru bloggeri.

Prin CPT putem crea proiecte complexe, limitate doar de imaginatie (*si resurse ). Astel putem crea listinguri imobiliare, anunturi, carti si autori, filme si actori, conectate sau nu, categorii, taxonomii si tot ce-ti poti dori.

Daca te-am convins…

Unde initializezi CPT?

Exista multe optiuni. Personal folosesc folderul mu-plugins (toate fisierele din mu-plugins [mu = must use] sunt incarcate automat de WordPress), rapid si fara batai de cap. Aceste pluginuri nu se pot dezactiva, trebuie sterse. In acest fel nu depind de alte pluginuri care definesc CPT sau de tema (functions.php). Din nou, e o preferinta, si oricare optiune e valabila si functioneaza aproximativ la fel.

Folderul mu-plugins nu exista intr-o instalare standard si trebuie creat. Se creeaza in folderul wp-content, langa plugins.

Cum initializezi CPT

Mai jos un exemplu dintr-o clasa folosita de mine la un proiect mai vechi, fisierul complet, inclusiv comentarii extinse se poate descarca aici: CPT Vacancies Exemplu.

Pe scurt, toata procedura se poate reduce la o singura functie register_post_type().

Restul sunt extra. Nu suntem obligati sa definim noi meta, taxonomies, etc

Nu are rost sa definim o tona de parametri care nu ne intereseaza. Nu uita “Simplicity is the ultimate sophistication.”


<?php

Class CRCWVacancies {

private static $post_type = "vacancies";

public static function init() {
add_action("init", array(__CLASS__, "register_post_type"));
}

public static function register_post_type() {
$args = array(
"label" => "Vacancies",
"public" => true,
"supports" => array("title", "author", "editor", "revisions", "thumbnail", "page-attributes"), "has_archive" => "current-vacancies",
"rewrite" => array("with_front" => false,
"slug" => "current-vacancies"),
"menu_position" => 20);
register_post_type(self::$post_type, $args);
}

}

CRCWVacancies::init();

Posibilitatea dar mai ales usurinta in a folosi si mai ales personaliza sunt ceea ce fac WordPress asa de puternic si popular. Sigur sigur vei folosi si tu CPT daca te implici in dezvoltarea site-urilor cu WordPress.

Exista o gramada de resurse pe tema CPT. Eu am facut un rezumat cu minimul necesar pentru a incepe. Mai multe informatii se pot gasi pe Codex-ul WP http://codex.wordpress.org/Post_Types

Sau o clasa cu toate optiunile imaginabile: https://github.com/jjgrainger/wp-custom-post-type-class/blob/master/src/CPT.php

 

Published by

Cristian Raț

Lucrez ca si dezvoltator aplicatii web de mai bine de 10 ani. Sunt Senior PHP developer la o companie din Londra. Anterior am lucrat in diverse agentii digitale din Londra sau Romania, unde am avut propria companie. In general folosesc WordPress la proiectele freelance sau Symfony framework la jobul de zi cu zi.

Leave a Reply

Your email address will not be published. Required fields are marked *