X

Eliminar el slug de la URL de un Custom Post Type

En un artículo anterior habíamos visto cómo crear un Custom Post Type en WordPress, directamente a través de código, sin embargo la creación del CPT tiene por defecto un alias o slug como parte de su url, en este artículo veremos cómo quitar ese slug de la url.

 

Generalidades

Tomaremos como ejemplo la creación de un CPT llamado recetas, además nos aseguraremos que este CPT ya se muestre correctamente en el front-end del sitio.

Si tienes dudas sobre cómo trabajar con Custom Post Type, revisa: Usando Custom Post Type en WordPress.

 

Resultado Final

Al final queremos obtener algo similar a la siguiente imagen

 

Modificando la creación del CPT

Al crear el CPT habíamos establecido algunos valores para el rewrite, sin embargo ahora lo asignaremos directamente a false

'rewrite' => false,
Quitamos el comportamiento de urls amigables por defecto para el CPT ya que estableceremos las urls amigables por código.

 

Código para urls amigables del Custom Post Type

En el siguiente código asumimos que el CPT es: «recetas_post_type» , puedes cambiar este valor por el nombre con el que registraste tu CPT.


// Agregamos la condición de rewrite sin considerar el texto del slug del CPT
function custom_post_type_rewrites() {
    add_rewrite_rule( '([^/]+)/?$', 'index.php?recetas_post_type=$matches[1]');
}
add_action( 'init', 'custom_post_type_rewrites' );


// Establecemos URLs amigables
function custom_post_type_permalinks( $post_link, $post, $leavename ) {
    if ( isset( $post->post_type ) && 'recetas_post_type' == $post->post_type ) {
        $post_link = home_url( $post->post_name );
    }
    return $post_link;
}
add_filter( 'post_type_link', 'custom_post_type_permalinks', 10, 3 );

Luego de agregar este código asegúrate de ir al backend de tu sitio y luego en Ajustes > Enlaces Permanentes y guardar, no es necesario que hagas modificaciones, simplemente dale guardar.
Puedes agregar este código al final de tu archivo functions.php de tu tema hijo.

 

Conclusión

Actualmente WorPress no ofrece una solución simple para quitar el slug de un CPT de la url, en este artículo hemos aprendido cómo realizar esto directamente a través de código.

 

Categorías: Core

Ver comentarios (11)