Quick Timeout: Misc Updates
Tujuan
Memperbaiki beberapa hal kecil sebelum lanjut ke Custom Fields:
- Menangani excerpt dengan benar
- Menambahkan support excerpt untuk custom post type
- Memperbaiki link "View All Events"
- 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
if (has_excerpt()) {
echo get_the_excerpt();
} else {
echo wp_trim_words(get_the_content(), 18);
}
?>| Fungsi | Penjelasan |
|---|---|
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()+echodaripadathe_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
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
| Value | Fungsi |
|---|---|
'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 arraysupportssama sekali,titledaneditorsudah 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
3. Memperbaiki Link "View All Events"
Di front-page.php, cari tombol "View All Events" di bawah loop events, lalu update link-nya:
<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>| Fungsi | Penjelasan |
|---|---|
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:
<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>| Bagian | Penjelasan |
|---|---|
get_post_type() | Mengembalikan post type dari default query saat ini |
== 'event' | Cek apakah sedang di halaman yang berhubungan dengan event |
current-menu-item | Class CSS yang membuat link menjadi kuning/active |
Link Events sekarang:
- ✅ Menyala kuning di archive events (
/events) - ✅ Menyala kuning di single event (
/events/poetry-day)