Kustomisasi tingkat lanjut pada WordPress, adakalanya kamu diharuskan untuk membuat custom rewrite rules. Ini kamu gunakan untuk menerjemahkan apa yang kamu ubah pada WordPress agar dapat dimengerti oleh core WordPressnya sendiri.
Custom Rewrite rules pada WordPress dapat dilakukan dengan banyak cara. Setiap WordPress developer kemungkinan berbeda cara untuk melakukan rewrite. Yang akan saya share ini adalah cara pintar dalam me-rewrite custom taxonomy, agar request halaman yang ditampilkan, tidak 404 dan sesuai dengan semestinya. Kenapa pintar? akan saya jelaskan diakhir tutorial ini.
Kita mulai dengan membuat sebuah hierarchy Custom Taxonomy dengan nama custom_taxonomy
untuk Post. Wajib Baca: Cara membuat Custom Taxonomy.
1. Menghilangkan taxonomy-base
Kita asumsikan bahwa kita harus membuat custom taxonomy dengan term link domain.com/<taxonomy-slug>
Mari kita lakukan dengan menulis code berikut pada function.php
tema kamuBaca juga: 5 Menit mengganti Taxonomy Link
function murdeni_custom_term_link_url($link, $term, $taxonomy) {
if($taxonomy == 'custom_taxonomy') {
$link = get_home_url().'/'.$term->slug;
}
return $link;
}
add_filter('term_link', 'murdeni_custom_term_link_url', 99, 3);
Setelah mengganti term link, jika kamu buka link tersebut akan menampilkan 404. Itu artinya kamu harus menulis custom rewrite pada term link kamu, agar dapat dimengerti oleh core WordPress. Gunakan Plugin Query Monitor untuk melihat request dan variabel query pada halaman.
Masukkan kode berikut pada function.php
tema kamu.
// rewrite
function murdeni_generate_taxonomy_rewrite_rules( $wp_rewrite ) {
global $wp_rewrite;
$tax = 'custom_taxonomy';
$terms = get_terms( array( 'taxonomy' => $tax, 'hide_empty' => false ));
$rules = array();
foreach($terms as $term) {
$rules[$term->slug . '/page/(.+?)(?:/([0-9]+))?/?$'] = 'index.php?'.$tax.'=' . $term->slug. '&paged=$matches[1]';
$rules[$term->slug . '/?$'] = 'index.php?'.$tax.'=' . $term->slug;
}
$wp_rewrite->rules = $rules + $wp_rewrite->rules;
return $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'murdeni_generate_taxonomy_rewrite_rules', 99, 1);
Jangan lupa untuk save ulang pengaturan->permalink
ketika setelah menambahkan kode diatas, atau ketika kamu mengubahnya. Ini bertujuan agara file .htaccess
kamu kembali di reload ketika ada rewrite yang berubah.
Metode rewrite ini dapat juga berlaku untuk taxonomy dengan rewrite hierarchy seperti category
dan (woocommerce) product_cat
.
Cara ini menurut pengalaman saya cukup pintar, karena kita tidak perlu menulis satu-persatu link untuk rewrite, Cukup loop semua term, lalu buat pola dan terjemahkan variabel stringnya. Mudah, simple, dan jarang gagal dan jarang sekali terjadi error dan conflict.
Jika kamu mengalami kendala pada penulisan rewrite atau kamu punya masalah yang berbeda terkait rewrite ini, jangan sungkan untuk menulisnya di kolom komentar.