Bagaimana cara menulis ulang URI dari jenis posting khusus?

16

Situs yang saya kerjakan menggunakan struktur permalink "cantik" berikut:

http://example.com/blog/my-special-post

Tetapi untuk jenis posting khusus, klien saya ingin menghindari siput "cantik":

http://example.com/product/142

Bagaimana ID kiriman dapat digunakan sebagai pengganti siput untuk jenis kiriman khusus?

Saya percaya bahwa ini mungkin menggunakan WP_Rewrite, tapi saya tidak tahu harus mulai dari mana.

Lea Hayes
sumber

Jawaban:

33

Ini yang saya gunakan untuk menulis ulang URL jenis posting khusus dengan ID posting. Anda memerlukan aturan penulisan ulang untuk menerjemahkan permintaan URL, serta filter aktif post_type_linkuntuk mengembalikan URL yang benar untuk setiap panggilan get_post_permalink():

add_filter('post_type_link', 'wpse33551_post_type_link', 1, 3);

function wpse33551_post_type_link( $link, $post = 0 ){
    if ( $post->post_type == 'product' ){
        return home_url( 'product/' . $post->ID );
    } else {
        return $link;
    }
}

add_action( 'init', 'wpse33551_rewrites_init' );

function wpse33551_rewrites_init(){
    add_rewrite_rule(
        'product/([0-9]+)?$',
        'index.php?post_type=product&p=$matches[1]',
        'top' );
}
Milo
sumber
Halo @ moilo ini bekerja dengan sempurna ... tetapi saya ingin beberapa perubahan, bisakah Anda membimbing saya
deemi-D-nadeem