Skip to content

Quick Timeout: Misc Updates

Tujuan

Memperbaiki beberapa hal kecil sebelum lanjut ke Custom Fields:

  1. Menangani excerpt dengan benar
  2. Menambahkan support excerpt untuk custom post type
  3. Memperbaiki link "View All Events"
  4. Memperbaiki navigasi header untuk events

1. Menangani Excerpt dengan Benar

Masalah

Sebelumnya kita pakai wp_trim_words() untuk potong 18 kata pertama dari konten. Tapi kadang kita ingin menulis excerpt manual yang lebih rapi.

Solusi: Gunakan Conditional Logic

Di front-page.php, ganti kode excerpt menjadi:

php
<?php
  if (has_excerpt()) {
    echo get_the_excerpt();
  } else {
    echo wp_trim_words(get_the_content(), 18);
  }
?>
FungsiPenjelasan
has_excerpt()Cek apakah post punya excerpt manual
get_the_excerpt()Ambil excerpt manual (tanpa auto-echo, pakai echo)
the_excerpt()Echo excerpt langsung — tapi menambahkan tag <p> yang bisa mengganggu layout
wp_trim_words(get_the_content(), 18)Fallback: potong 18 kata pertama dari konten

⚠️ Gunakan get_the_excerpt() + echo daripada the_excerpt() untuk menghindari tag <p> tambahan yang menyebabkan gap vertikal.

Di Mana Menulis Excerpt di Admin?

  • Block Editor: Sidebar kanan → tab Document → scroll ke bawah → Excerpt
  • Classic Editor: Klik Screen Options (pojok kanan atas) → centang Excerpt

2. Menambahkan Support Excerpt & Block Editor untuk Custom Post Type

Buka wp-content/mu-plugins/university-post-types.php dan tambahkan parameter supports dan show_in_rest:

php
<?php

function university_post_types() {
  register_post_type('event', array(
    'show_in_rest' => true,
    'supports' => array('title', 'editor', 'excerpt'),
    'has_archive' => true,
    'rewrite' => array('slug' => 'events'),
    'public' => true,
    'labels' => array(
      'name' => 'Events',
      'add_new_item' => 'Add New Event',
      'edit_item' => 'Edit Event',
      'all_items' => 'All Events',
      'singular_name' => 'Event'
    ),
    'menu_icon' => 'dashicons-calendar'
  ));
}

add_action('init', 'university_post_types');

Penjelasan supports

ValueFungsi
'title'Field judul (default kalau tidak ada supports)
'editor'Field konten/body (default kalau tidak ada supports) — wajib disertakan jika mau Block Editor
'excerpt'Menambahkan field excerpt manual

⚠️ Penting: Jika kamu menuliskan array supports, kamu harus menyertakan 'editor' secara eksplisit, atau post type akan fallback ke Classic Editor. Tanpa array supports sama sekali, title dan editor sudah otomatis aktif.

Penjelasan show_in_rest

  • show_in_rest => true → Membuat post type tersedia di REST API → mengaktifkan Block Editor modern
  • Tanpa ini, post type akan menggunakan Classic Editor

Di front-page.php, cari tombol "View All Events" di bawah loop events, lalu update link-nya:

html
<p class="t-center no-margin">
  <a href="<?php echo get_post_type_archive_link('event'); ?>" class="btn btn--blue">
    View All Events
  </a>
</p>
FungsiPenjelasan
get_post_type_archive_link('event')Menghasilkan URL archive untuk post type event secara dinamis

💡 Lebih baik pakai fungsi ini daripada hardcode /events — jadi kalau slug berubah di masa depan, link tetap benar.


4. Memperbaiki Navigasi Header untuk Events

Buka header.php, cari list item untuk Events:

html
<li <?php if (get_post_type() == 'event') echo 'class="current-menu-item"'; ?>>
  <a href="<?php echo get_post_type_archive_link('event'); ?>">Events</a>
</li>
BagianPenjelasan
get_post_type()Mengembalikan post type dari default query saat ini
== 'event'Cek apakah sedang di halaman yang berhubungan dengan event
current-menu-itemClass CSS yang membuat link menjadi kuning/active

Link Events sekarang:

  • ✅ Menyala kuning di archive events (/events)
  • ✅ Menyala kuning di single event (/events/poetry-day)