Como reescrever o URI do tipo de post personalizado?

11

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 personalizada, meu cliente gostaria de evitar um slug "bonito":

http://example.com/product/142

Como o ID do post pode ser usado no lugar do slug para o tipo de postagem personalizado?

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

    
por Lea Hayes 12.11.2011 / 01:13

1 resposta

28

Isso é o que eu uso para reescrever URLs de tipo de postagem personalizada com o ID do post. Você precisa de uma regra de reconfiguração para traduzir solicitações de URL, bem como um filtro em post_type_link para retornar as URLs corretas para 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' );
}
    
por Milo 12.11.2011 / 03:19