¿Cómo reescribir la URI de un tipo de entrada personalizada?

12 nov 2011, 02:13:52
Vistas: 29.3K
Votos: 17

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

http://example.com/blog/mi-entrada-especial

Pero para un tipo de entrada personalizada mi cliente desea evitar tener un slug "amigable":

http://example.com/product/142

¿Cómo se puede usar el ID de la entrada en lugar del slug para el tipo de entrada personalizada?

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

0
Todas las respuestas a la pregunta 1
1
37

Esto es lo que uso para reescribir las URLs de tipos de post personalizados con el ID del post. Necesitas una regla de reescritura para traducir las solicitudes de URL, así como un filtro en post_type_link para devolver las URLs 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' );
}
12 nov 2011 04:19:47
Comentarios

Hola @milo, esto funciona perfectamente para mí... pero quiero hacer algunos cambios, ¿puedes guiarme?

deemi-D-nadeem deemi-D-nadeem
13 mar 2015 07:45:42