Como reescrever URI do tipo de postagem personalizada?

16

O site em que estou trabalhando usa a seguinte estrutura de link permanente "bonita":

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

Mas para um tipo de postagem personalizado, meu cliente gostaria de evitar uma lesma "bonita":

http://example.com/product/142

Como o ID da postagem pode ser usado no lugar da lesma para o tipo de postagem personalizada?

Acredito que isso seja possível usando o WP_Rewrite, mas não sei por onde começar.

Lea Hayes
fonte

Respostas:

33

É isso que eu uso para reescrever URLs personalizados do tipo de postagem com o ID da postagem. Você precisa de uma regra de reescrita para traduzir solicitações de URL, bem como um filtro post_type_linkpara retornar as URLs corretas de todas as chamadas para 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
fonte
Oi @milo isso me funciona perfeitamente ... mas eu quero algumas mudanças por favor pode me orientar
Deemi-D-nadeem