Comme le titre l'indique, j'aimerais supprimer les slugs parents des URL d'un type de publication particulier: services.
Quelque chose qui changerait cela:
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
Pour quelque chose comme ça:
http://demo.com/child-service-1
http://demo.com/child-service-2
http://demo.com/child-service-3
etc
Je préférerais ne pas utiliser de plugins supplémentaires pour accomplir cela. Je livre actuellement le CPT via un plugin, qui enregistre également une taxonomie personnalisée.
Lors d'un test rapide, j'ai été surpris de constater que cela fonctionne immédiatement. C'est-à-dire que l'URI canonique d'une publication enfant a toujours le parent dans le chemin, mais que la publication enfant fonctionne tout aussi bien sans elle (ne 404, ne redirige pas). En conséquence, il suffit de filtrer post_type_link
pour que cela fonctionne comme vous le demandez! Le code suivant devrait faire exactement cela:
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 );