Header Ads

Vultr $100

MEMBUAT DAN MENAMBAH CUSTOM POST TYPE SERTA MENAMPILKANNYA PADA HALAMAN

Pada dasarnya, custom post type memungkinkan Sampeyan untuk membuat posting dan halaman tertentu secara lebih spesifik dengan membuat jenis konten yang sangat berbeda pada website. MEMBUAT DAN MENAMBAH CUSTOM POST TYPE SERTA MENAMPILKANNYA PADA HALAMAN

Memang banyak sekali plugins-plugins gratis hingga berbayar yang bisa kita gunakan, tapi tidak jarang, plugins-plugins tadi tidak sesuai dengan ekspektasi dan harapan yang kita inginkan.

Sebagai contoh, nanti kita gunakan basis website movie yang ragam postnya lebih variatif dan detail karena akan menyangkut banyak hal, seperti aktor, aktris, studio, tahun pembuatan film, genre film itu sendiri dan masih banyak lagi.

CUSTOM POST-TYPE

Apa itu Custom Post Type?

Custom post type adalah jenis konten seperti posting dan halaman. Sejak WordPress berevolusi dari platform blog sederhana menjadi CMS yang kuat, istilah posting tetap melekat pada Content Management System ini. Namun, custom post ternyata bisa dikembangkan berupa konten apa pun.

Secara default, WordPress memiliki custom post standard:
  1. Post
  2. Page
  3. Attachment
  4. Revision
  5. Menu Nav
Sampeyan dapat membuat custom post type sendiri dan memanggilnya dengan apa pun yang Sampeyan inginkan.

Bisa diambil contoh, misalkan website movie, website resep masakan yang variasinya lebih detail dan lebih spesifik. Sebagai contoh, nanti kita gunakan basis website movie yang ragam postnya lebih variatif dan detail karena akan menyangkut banyak hal, seperti aktor, aktris, studio, tahun pembuatan film, genre film itu sendiri dan masih banyak lagi.

Plugins Custom Post Type

Berikut ini adalah beberapa plugin teratas yang menggunakan custom post type.
  • WooCommerce - Menambahkan custom post khusus produk ke website.
  • WPForms - Membuat custom post wpforms untuk menyimpan semua formulir.
  • MemberPress - Menambahkan custom post type memberpressproduct.

Membuat Custom Post Type Menggunakan Plugins CPT UI

MEMBUAT DAN MENAMBAH CUSTOM POST TYPE SERTA MENAMPILKANNYA PADA HALAMAN
Cara termudah untuk membuat custom post type di WordPress adalah dengan menggunakan plugin. Cara ini disarankan untuk pemula karena aman dan amat sangat super gampang. https://wordpress.org/plugins/custom-post-type-ui/

Install dan aktifkan plugin CPT UI. Setelah aktif, plugins akan menambahkan item menu baru di menu admin dashboard Sampeyan yang disebut CPT UI.

Masuk ke Menu CPT UI » Add New untuk membuat custom post type baru. Pertama Sampeyan harus menyediakan slug untuk custom post type tertentu. Dimana slug ini akan digunakan pada permalink URL dan query WordPress, jadi hanya boleh berisi huruf dan angka saja.

Kemudian selanjutnya, Sampeyan perlu memberikan nama plural dan singular untuk custom post type tersebut.

Secara opsional Sampeyan bisa melanjutkan pada menu 'Populate additional labels based on chosen labels'.

Skrol ke bawah pada bagian 'Additional Labels' dari sini Sampeyan dapat memberikan deskripsi untuk custom post type tersebut dan mengubah label-labelnya.

MEMBUAT DAN MENAMBAH CUSTOM POST TYPE SERTA MENAMPILKANNYA PADA HALAMAN
Dimana label ini akan digunakan di seluruh user interface pada saat Sampeyan mengelola konten dalam custom post type tersebut.

Selanjutnya, muncul opsi pengaturan post type. Dari sini Sampeyan dapat mengatur atribut yang berbeda untuk post type terkait. Setiap opsi dilengkapi dengan deskripsi singkat yang menjelaskan fungsinya masing-masing.
MEMBUAT DAN MENAMBAH CUSTOM POST TYPE SERTA MENAMPILKANNYA PADA HALAMAN
Contohnya, Sampeyan dapat memilih untuk tidak membuat jenis posting hierarkis seperti halaman atau membalikkan kronologis seperti posting.

Pada pengaturan umum, Sampeyan akan melihat pilihan untuk memilih fitur pengeditan mana yang akan didukung oleh post type ini. Cukup centang opsi yang ingin disertakan.
MEMBUAT DAN MENAMBAH CUSTOM POST TYPE SERTA MENAMPILKANNYA PADA HALAMAN
Terakhir, klik pada 'Add Post Type' untuk menyimpan dan membuat custom post type tadi. Itu saja, Sampeyan udah membuat custom post type dan tinggal melanjutkan dan menambahkan konten.

Membuat Custom Post Type Secara Manual

Nah, masalahnya, ketika kita membuat custom post type menggunakan plugins adalah bahwa custom post type ini akan hilang saat plugins dinonaktifkan, crash, error, tidak kompatibel lagi dengan resource hosting/server termasuk didalamnya PHP version yang berjalan atau bahkan udah gak didukung lagi oleh developernya untuk pembaharuan versi mengikuti update core WordPress itu sendiri.

Dan hal ini bisa kapan aja terjadi tanpa warning, tanpa pemberitahuan sebelumnya 😄

Data apa pun yang Sampeyan buat dalam custom post type tersebut akan tetap ada didalam database, tetapi tidak akan terdaftar dan tidak dapat diakses dari area admin 😄

Jika Sampeyan ada pada project di website klien dan tidak ingin menginstal plugin tambahan lain, maka sampeyan dapat secara manual membuat custom post type dengan menambahkan script yang diperlukan pada file functions.php theme atau pada plugins lain yang berjalan pada website terkait.

Saya lebih merekomendasikan agar Sampeyan membuat plugins sendiri untuk kebutuhan ini, caranya sangat mudah. Sampeyan tinggal memanfaatkan dan menduplikasi file plugins hello.php alias plugins Hello Dolly bawaan WordPress, kemudian rename dan beri nama URI sesuai dengan kebutuhan Sampeyan, upload pada folder plugins dan aktifkan. Thats it.

Kemudian Sampeyan bisa melakukan coding/script-writing secara on the fly dari dashboard cPanel atau menggunakan FTP seperti WinSCP dan tidak melakukan coding melalui dashobard WordPress plugins editor guna menghindari error dan ter-lock yang kemungkinan terjadi selama aktifitas develop plugins ini.


Contoh dibawah ini adalah yang paling simple dan berfungsi penuh sehingga sampeyan memahami dengan mudah cara kerjanya:

// membuat fungsi custom post type
function create_posttype() {
 
    register_post_type( 'movies',
    // CPT Options
        array(
            'labels' => array(
                'name' => __( 'Movies' ),
                'singular_name' => __( 'Movie' )
            ),
            'public' => true,
            'has_archive' => true,
            'rewrite' => array('slug' => 'movies'),
            'show_in_rest' => true,
 
        )
    );
}
// Hook function pada theme
add_action( 'init', 'create_posttype' );
Fungsi script diatas adalah mendaftarkan tipe posting 'movies' dengan array argumen. Argumen ini adalah opsi dari custom post type.

Array ini memiliki dua bagian, bagian pertama diberi label, yang merupakan sebuah array. Bagian kedua berisi argumen lain seperti visibilitas publik, archive, slug, dan show_in_rest dukungan pada block editor.

Sekarang kita perhatikan pada bagian script detail yang menambahkan lebih banyak opsi ke custom post type.


/*
* Membuat fungsi untuk custom post type
*/
 
function custom_post_type() {
 
// Set label UI Custom Post Type
    $labels = array(
        'name'                => _x( 'Movies', 'Post Type General Name', 'twentytwenty' ),
        'singular_name'       => _x( 'Movie', 'Post Type Singular Name', 'twentytwenty' ),
        'menu_name'           => __( 'Movies', 'twentytwenty' ),
        'parent_item_colon'   => __( 'Parent Movie', 'twentytwenty' ),
        'all_items'           => __( 'All Movies', 'twentytwenty' ),
        'view_item'           => __( 'View Movie', 'twentytwenty' ),
        'add_new_item'        => __( 'Add New Movie', 'twentytwenty' ),
        'add_new'             => __( 'Add New', 'twentytwenty' ),
        'edit_item'           => __( 'Edit Movie', 'twentytwenty' ),
        'update_item'         => __( 'Update Movie', 'twentytwenty' ),
        'search_items'        => __( 'Search Movie', 'twentytwenty' ),
        'not_found'           => __( 'Not Found', 'twentytwenty' ),
        'not_found_in_trash'  => __( 'Not found in Trash', 'twentytwenty' ),
    );
     
// Set pilihan lain Custom Post Type
     
    $args = array(
        'label'               => __( 'movies', 'twentytwenty' ),
        'description'         => __( 'Movie news and reviews', 'twentytwenty' ),
        'labels'              => $labels,
        // Fitur Custom Post Type pada Post Editor
        'supports'            => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', ),
        // Lu bisa gabungin Custom Post Type antara taxonomy atau kategori.
        'taxonomies'          => array( 'genres' ),
        /* hierarchical Custom Post Type macam Pages dan bisa memiliki parent dan child taxonomy
        * Parent dan child. non-hierarchical Custom Post Type seperti halnya Posts.
        */
        'hierarchical'        => false,
        'public'              => true,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'show_in_nav_menus'   => true,
        'show_in_admin_bar'   => true,
        'menu_position'       => 5,
        'can_export'          => true,
        'has_archive'         => true,
        'exclude_from_search' => false,
        'publicly_queryable'  => true,
        'capability_type'     => 'post',
        'show_in_rest' => true,
 
    );
     
    // Registering Custom Post Type
    register_post_type( 'movies', $args );
 
}
 
/* Hook pada 'init' action function
* Contain post type registration is not
* unnecessarily executed.
*/
 
add_action( 'init', 'custom_post_type', 0 );

Menampilkan Custom Post Type Pada Post

WordPress dengan default bawaan bisa dikembangkan untuk menampilkan custom post type. Setelah menambahkan beberapa item ke dalam custom post type baru, sekarang menampilkannya pada website.

Ada beberapa metode yang dapat digunakan, masing-masing memiliki kelebihan.

Menampilkan Custom Post Type Menggunakan Theme Archive Default

MEMBUAT DAN MENAMBAH CUSTOM POST TYPE SERTA MENAMPILKANNYA PADA HALAMAN
Pertama, Appearance » Menus dan menambahkan tautan khusus ke menu. Link kustom ini adalah link ke custom post type.

Jika menggunakan permalink SEO friendly maka URL akan seperti ini:
https://domain.tld/movies

Jika tidak menggunakan permalink SEO friendly, maka URL permalink akan menjadi seperti ini:
https://domain.tld/?post_type=movies

Menampilkan Custom Post Types Pada Halaman Index

Salah satu keuntungan menggunakan custom post type adalah konten custom post type akan jauh lebih kaya dibandingkan postingan standard. Namun, jika ingin ditampilkan di antara posting standard lainnya, maka dapat menambahkan script ini ke file functions.php theme:


add_action( 'pre_get_posts', 'add_my_post_types_to_query' );
 
function add_my_post_types_to_query( $query ) {
    if ( is_home() && $query->is_main_query() )
        $query->set( 'post_type', array( 'post', 'movies' ) );
    return $query;
}

Querying Custom Post Types

Jika Sampeyan familiar dengan coding dan ingin menjalankan query loop langsung pada theme, berikut adalah cara melakukannya:

Dengan membuat query database, Sampeyan bisa mengambil item dari custom post type ini.

<?php
$args = array( 'post_type' => 'movies', 'posts_per_page' => 10 );
$the_query = new WP_Query( $args );
?>
<?php if ( $the_query->have_posts() ) : ?>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<div class="entry-content">
<?php the_content(); ?>
</div>
<?php endwhile;
wp_reset_postdata(); ?>
<?php else:  ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>
Pada script ini, pertama, kita telah menentukan post type dan posting per halaman dalam argumen pada class WP_Query.

Setelah itu, jalankan query-nya untuk mengambil postingan dan menampilkannya di dalam loop.

Menampilkan Custom Post Type Pada Widget

Pertama yang perlu dilakukan adalah menginstal dan mengaktifkan plugin Ultimate Posts Widget http://wordpress.org/plugins/ultimate-posts-widget/. Setelah aktif, lanjutkan pada Appearance » Widgets dan drag and drop widget Ultimate Posts ke sidebar.
MEMBUAT DAN MENAMBAH CUSTOM POST TYPE SERTA MENAMPILKANNYA PADA HALAMAN
Widget ini memungkinkan Sampeyan untuk menampilkan posting terbaru dari semua post type. Juga dapat menampilkan kutipan posting dengan permalink post atau menampilkan featured image di sebelah judul posting.

Konfigurasi widget dengan memilih opsi yang diinginkan dan dengan memilih custom post type. Setelah itu simpan perubahan.