WordPress sangat fleksibel, bila dibutuhkan pengguna bisa menambahkan jenis post type lain menggunakan fungsi Custom Post Type.
WordPress memiliki fungsi untuk menampilkan konten dalam berbagai format. Fungsi tersebut bernama post type atau tipe konten. Contoh tipe konten yang paling umum dan tersedia secara bawaan adalah Pos (posts) dan Laman (pages).
Selain tipe konten yang tersedia secara bawaan, apakah kita bisa menambahkan tipe konten lain?
Tentu saja bisa, WordPress sangat fleksibel. Pengguna bisa menambahkan jenis post type lain menggunakan fungsi Custom Post Type (CPT), selanjutnya saya sebut CPT saja.
Sebagai gambaran, misalnya suatu website ingin membuat halaman yang berisi keterangan spesifikasi suatu produk. Tetapi isi konten tersebut tidak cocok ditampilkan di halaman posts maupun pages, yang biasanya digunakan untuk menampilkan artikel.
Untuk mengakomodir kebutuhan seperti ini, pengguna bisa membuat halaman produk secara khusus dengan CPT.
Pada kesempatan kali ini saya akan menjelaskan langkah-langkah membuat CPT secara manual, tanpa menggunakan plugin. Caranya dengan memodifikasi berkas function.php yang ada pada tema.
Perlu dicatat, membuat CPT dengan memodifikasi tema bisa gagal ditampilkan bila tema terkait dinonaktifkan. Tapi jangan khawatir, datanya tetap tersimpan dalam database. Konten akan muncul kembali kalau tema tersebut diaktifkan.
Saran saya, sebaiknya gunakan berkas function.php yang ada pada child theme bukan pada tema utama. Sehingga hasil modifikasi tidak terhapus ketika terjadi pembaruan tema.
Contoh, saya akan membuat CPT untuk halaman ‘Produk’.
Langkah pertama, membuat potongan kode atau snippet CPT .
Buat fungsi dengan nama jwp_custom_post_type
, untuk kasus kamu silahkan buat nama fungsi sesuai selera masing-masing. Syaratnya, nama fungsi tidak boleh menggunakan spasi. Gunakan ‘-‘ atau ‘_’ untuk menggantikan spasi.
Satu lagi, sebaiknya gunakan huruf kecil semua agar sesuai dengan kesepakatan umum.
Berikut potongan kode atau snippet untuk halaman ‘Produk’ yang saya buat:
// Fungsi Custom Post Type (CPT)
function jwp_custom_post_type() {
register_post_type('jwp_produk',
array(
'labels' => array(
'name' => __( 'Produk'),
'singular_name' => __( 'Produk'),
),
'public' => true,
'has_archive' => true,
'rewrite' => array( 'slug' => 'produk' ),
)
);
}
Kemudian daftarkan fungsi jwp_custom_post_type
di atas dengan membuat hook berikut:
add_action('init', 'jwp_custom_post_type');
Sehingga hasil akhirnya menjadi seperti ini:
// Fungsi Custom Post Type (CPT)
function jwp_custom_post_type() {
register_post_type('jwp_produk',
array(
'labels' => array(
'name' => __( 'Produk'),
'singular_name' => __( 'Produk'),
),
'public' => true,
'has_archive' => true,
'rewrite' => array( 'slug' => 'produk' ),
)
);
}
add_action('init', 'jwp_custom_post_type');
Informasi yang ada dalam potongan kode diatas sangat minimal. Kamu bisa menambahkan detail lainnya. Detail Custom Post Type lengkap bisa dilihat di website resmi WordPress.
Selain itu kamu juga bisa memanfaatkan tools pihak ketiga seperti post type generator. Dengan tools ini kamu tinggal memasukkan data-data lalu sistem akan meng-generate kode CPT-nya.
Langkah kedua, menyisipkan snippet di atas ke dalam berkas function.php yang ada pada tema. Jika kamu tidak tahu caranya, silahkan baca cara menyisipkan snippet pada berkas function.php.
Sekarang saya telah memiliki fungsi CPT untuk konten ‘Produk’ dalam tema. CPT tersebut akan muncul pada dashboard WordPress, seperti terlihat pada gambar di bawah ini.
Setelah kamu mengisi konten untuk halaman ‘Produk’, mungkin WordPress tidak bisa menampilkannya. Biasanya keluar pesan ERROR 404.
Mengapa demikian?
Penjelasannya sebagai berikut.
Saya menuliskan kata ‘produk’ ketika mengisi informasi slug pada snippet CPT di atas. Maka seluruh konten dalam ‘Produk’ akan ditampilkan oleh website dalam direktori ‘produk’, berikut contoh url-nya”
http://www.nama-website-saya.com/produk/
judul-konten/
Namun ketika url tersebut diakses, website menampilkan pesan ERROR 404, yang artinya konten tersebut dianggap tidak ada. Hal ini terjadi karena sistem WordPress belum mengetahui keberadaan slug ‘produk’.
Untuk menampilkannya kita harus me-refresh permalink website.
Caranya, masuk ke admin area lalu buka:
Pengaturan > Permalink
Klik tombol ‘Simpan Perubahan‘ tanpa mengubah opsi apapun pada halaman ini. Tujuannya hanya me-refresh saja, agar permalink WordPress mengenali direktori ‘produk’ yang baru kita buat.
Custom Post Type yang telah kita buat tidak serta merta tampil di halaman depan (home). Agar bisa tampil buat fungsi untuk menambahkan CPT ke dalam query halaman depan.
Dalam kasus ini, fungsi tersebut saya namakan add_jwp_custom_post_type
, dengan snippet seperti ini:
// Tampilkan CPT 'Produk' di halaman depan
function add_jwp_custom_post_type( $query ) {
if ( is_home() && $query->is_main_query() )
$query->set( 'post_type', array( 'product' ) );
return $query;
}
add_action( 'pre_get_posts', 'add_jwp_custom_post_type' );
Sisipkan fungsi di atas ke dalam berkas function.php. Posisinya bisa setelah atau sebelum snippet CPT yang telah kita buat sebelumnya.
Demikian tutorial singkat dari saya. Bila ada yang ingin ditanyakan atau mau menambahkan, silahkan gunakan kolom komentar di bawah.
Isi dari tulisan ini sangat membantu. Terima kasih!
Terima kasih juga atas apresiasinya, semoga hari Anda menyenangkan!