Cara pintar Custom rewrite rule untuk Custom Taxonomy

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.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *