Eliminando la babosa principal de la URL en el tipo de publicación personalizada

2

Como indica el título, me gustaría eliminar las barras primarias de las URL para un tipo de publicación en particular: servicios.

Algo que cambiaría esto:

http://demo.com/parent-service/child-service-1
http://demo.com/grand-parent-service/parent-service/child-service-2
http://demo.com/great-grand-parent-service/grand-parent-service/parent-service/child-service-3
etc

A algo como esto:

http://demo.com/child-service-1
http://demo.com/child-service-2
http://demo.com/child-service-3
etc

Prefiero no usar complementos adicionales para lograr esto. Actualmente estoy entregando el CPT a través de un complemento, que también registra una taxonomía personalizada.

    
pregunta NW Tech 29.05.2013 - 00:26

1 respuesta

5

En una prueba rápida, me sorprendió descubrir que esto funciona fuera de la caja. Es decir, la URI canónica para una publicación secundaria aún tiene al padre en la ruta, pero la publicación secundaria funciona igual de bien (no 404, no redirige). Como resultado, ¡debería ser solo una cuestión de filtrar post_type_link para que esto funcione como usted lo solicita! El siguiente código debería hacer justamente eso:

function wpse_101072_flatten_hierarchies( $post_link, $post ) {
    if ( 'service' != $post->post_type )
        return $post_link;

    $uri = '';
    foreach ( $post->ancestors as $parent ) {
        $uri = get_post( $parent )->post_name . "/" . $uri;
    }

    return str_replace( $uri, '', $post_link );
}
add_filter( 'post_type_link', 'wpse_101072_flatten_hierarchies', 10, 2 );
    
respondido por el Matthew Boynes 29.05.2013 - 01:13

Lea otras preguntas en las etiquetas