¿Cómo reescribir el URI del tipo de publicación personalizada?

16

El sitio en el que estoy trabajando utiliza la siguiente estructura de enlaces permanentes "bonita":

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

Pero para un tipo de publicación personalizada, a mi cliente le gustaría evitar tener una babosa "bonita":

http://example.com/product/142

¿Cómo se puede usar la ID de publicación en lugar de la babosa para el tipo de publicación personalizada?

Creo que esto podría ser posible usando WP_Rewrite, pero no sé por dónde empezar.

Lea Hayes
fuente

Respuestas:

33

Esto es lo que uso para reescribir URL de tipo de publicación personalizada con la ID de publicación. Necesita una regla de reescritura para traducir las solicitudes de URL, así como un filtro post_type_linkpara devolver las URL correctas para cualquier llamada a 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
fuente
Hola @milo esto me funciona perfectamente ... pero quiero algunos cambios por favor, ¿me puede guiar
Deemi-D-nadeem