Categorías: Noticias

[WordPress] Eliminar el SLUG de la URL de un Custom Post Type CPT

En ocasiones deseamos modificar el permalink de un CPT eliminando el slug que WordPress nos coloca por defecto (el del mismo CPT), sin perder la forma de listar (loop) o de acceder a cada entrada (single).

Bien, la forma más directa de hacerlo es editando el archivo function.php de vuestro theme, también creando un plugin o invocando el código desde el functions.php a través de otro fichero. Para evitar entrar en qué forma es más correcta, simplemente atenderemos a la primera por comodidad. Así, editamos el fichero functions.php  Por cierto, la estructura en los permalinks (Ajustes->Enlaces permanentes) debe de ser /%postname%/.

Lo primero, registramos nuestro CPT como siempre, si el tema o el plugin es quien nos provee este CPT no será necesario hacerlo pero sí conocer su nombre para luego poder iterar sobre él.

$args = array(
‘description’ => ‘Coche CPT’,
‘label’ => __(‘Coches’),
‘public’ => true,
‘rewrite’ => array( ‘slug’ => ‘coche’),
);
register_post_type( ‘coche’ , $args );

Ahora, para nuestro CPT “coche” aplicamos un filtro

function eliminar_cpt_slug( $post_link, $post ) {

if ( ‘coche’ != $post->post_type || ‘publish’ != $post->post_status ) {
return $post_link;
}

$post_link = str_replace( ‘/’ . $post->post_type . ‘/’, ‘/’, $post_link );

return $post_link;
}
add_filter( ‘post_type_link’, ‘eliminar_cpt_slug’, 10, 2 );

Y listo, ya hemos eliminado “coche” de nuestro CPT. Si tenéis dudas, ya sabéis, comentad.

F. Javier Carazo Gil

Cofundador de CODECTION, empresa especializada en WordPress, autor de un libro sobre WordPress (el primero en español) y multitud de artículos (en medios físicos y virtuales) sobre el tema. Participa en la comunidad WordPress de forma activa siendo parte del equipo organizador de la WordPress Meetup de Córdoba, dando charlas en diferentes WordCamp y siendo autor y coautor de multitud de plugins libres y premium para WordPress de gran éxito.

Ver comentarios

  • Hola,
    Es exactamente lo que estoy buscando. Pero no me funciona, es decir si funciona, pero quiero ir a la single page de ese custom post type y me envia a la pagina 404.

    sabrías como solucionarlo?

Entradas recientes

432 CVEs

5 días hace

Anti-IA

2 semanas hace

Memoria

3 semanas hace

Mal uso

4 semanas hace

Precio de la RAM

1 mes hace

AUR

1 mes hace