Skip to content

Ikhtisar Chapter 8: Professor Post Type

Apa yang Dipelajari?

Cara membuat CPT Professor dengan featured image, menampilkan relasi professor ↔ program, dan membuat page banner dinamis dengan custom fields ACF.


Poin Utama

1. CPT Professor

Didaftarkan di mu-plugins seperti CPT lain, tapi dengan perbedaan:

FiturProfessorEvent/Program
ArchiveTidak adaAda
Supportstitle, editor, thumbnailtitle, editor, excerpt

thumbnail di array supports mengaktifkan featured image untuk post type ini.


2. Featured Image (Post Thumbnail)

Perlu 2 langkah untuk mengaktifkan:

  1. Di functions.php: add_theme_support('post-thumbnails')
  2. Di register CPT: tambahkan 'thumbnail' di supports

Custom image sizes — ukuran gambar khusus yang otomatis dibuat saat upload:

php
add_image_size('professorLandscape', 400, 260, true);  // card
add_image_size('professorPortrait', 480, 650, true);    // detail
add_image_size('pageBanner', 1500, 350, true);          // banner
FungsiOutput
the_post_thumbnail('size')Tag <img>
the_post_thumbnail_url('size')Hanya URL gambar

Gambar yang diupload sebelum add_image_size perlu di-regenerate pakai plugin Regenerate Thumbnails.


3. Relasi Professor ↔ Program

ACF field Related Program(s) dipasang juga di Professor (tambahkan rule "OR Post Type = Professor").

ArahCara
Professor → Programget_field('related_programs') + foreach
Program → ProfessorWP_Query + meta_query LIKE

Di halaman program, professor ditampilkan sebagai cards dengan foto dan nama.


4. wp_reset_postdata() — Kritis!

Kalau ada 2+ custom query di satu halaman (misal: professors + events di single-program.php), WAJIB panggil wp_reset_postdata() setelah setiap query selesai. Tanpa ini, get_the_ID() dan fungsi global lain bisa return data dari query sebelumnya.


5. Page Banner Dinamis

Dengan ACF, setiap halaman bisa punya:

  • Subtitle (text field)
  • Background image (image field)

Image field return berupa array — akses ukuran tertentu dengan:

php
$img = get_field('page_banner_background_image');
echo $img['sizes']['pageBanner'];

Masalah: kode banner sama di semua template → duplikasi. Solusi di Chapter 9.


Satu Kalimat

Chapter ini menambahkan Professor sebagai Custom Post Type dengan featured image dan page banner dinamis, serta menunjukkan cara menampilkan relasi antar konten dari kedua sisi.