Özel yazı türünün URI'sı nasıl yeniden yazılır?


16

Üzerinde çalıştığım site aşağıdaki "güzel" kalıcı bağlantı yapısını kullanıyor:

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

Ancak özel bir yazı türü için istemcim "tatlı" bir bilgi almak istemez:

http://example.com/product/142

Posta kimliği, özel posta türü için bilgi yerine nasıl kullanılabilir?

Bunun WP_Rewrite kullanarak mümkün olabileceğine inanıyorum, ancak nereden başlayacağımı bilmiyorum.

Yanıtlar:


33

Özel yazı türü URL'lerini posta kimliğiyle yeniden yazmak için kullandığım budur. URL isteklerini çevirmek için bir yeniden yazma kuralının yanı sıra, şu post_type_linkaramalar için doğru URL'leri döndürmek üzere bir filtreye de ihtiyacınız vardır 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' );
}

Merhaba @milo bu beni mükemmel çalışıyor ... ama bazı değişiklikler istiyorum lütfen bana rehberlik edebilir
deemi-D-nadeem
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.