Al desarrollar una web usando WordPress debemos atenernos al sistema jerárquico de plantillas que utiliza. Una de estas plantillas es la que se asigna al famoso error 404, lo que nos permite personalizar el aspecto que tendrá dicha página. Por defecto, el motor la mostrará cuando una URL no exista. Sin embargo, en ocasiones nos puede interesar ser selectivos a la hora de tratar los 404 y redirigir a una página diferente si se está visualizando un Custom Post Types por ejemplo. Nosotros vamos a ver cómo hacerlo programando un poco.
Supongamos que hemos diseñado un portal al cual hemos incluido un sistema de portfolio a medida. Para hacer esto hemos creado un nuevo tipo de entrada personalizada llamado proyecto, a través de los ya mencionados Custom Post Types. Todas las entradas asociadas a este nuevo tipo llevarán en la URL por tanto el slug o prefijo /proyecto/
y nosotros queremos que cuando un usuario entre a una página que no exista dentro de esa estructura, se redireccione a la página que contiene todos los trabajos en lugar de mostrar la 404.
Bajo la premisa anterior, crearemos una función en nuestro archivo functions.php usando el hook wp. Dentro incluiremos un condicional que verificará que no estemos en el panel de administración, que se haya obtenido un error 404 y que concuerde con que la URL contenga el slug proyecto. Si estas condiciones se cumplen, usando wp_redirect mandaremos al usuario a la página /portfolio/
.
function redireccion_portfolio( $wp ) {
if ( ! is_admin() && is_404() && preg_match( '/^proyecto/', $wp->request ) ) {
wp_redirect( home_url( user_trailingslashit( '/portfolio/' ) ) );
exit;
}
}
add_action( 'wp', 'redireccion_portfolio' );
Deja una respuesta