En este tutorial, te guiaré a través del proceso para redireccionar entradas individuales en WordPress, añadiendo el prefijo /blog
a las URLs (o el que tú prefieras). Este método asegurará que las redirecciones se manejen de manera controlada y efectiva dentro del entorno de WordPress.
Este cambio estratégico tiene como objetivo permitir un análisis detallado del tráfico que recibe nuestra web desde diversas fuentes como Google Search Console y Google Analytics, entre otras herramientas de medición. Mantener las URLs de nuestras entradas individuales con el prefijo ‘/blog’ nos permitirá obtener insights más precisos sobre el rendimiento orgánico del blog o «entradas», facilitando así decisiones informadas para mejorar nuestra visibilidad y estrategia de SEO.
Paso 1: Cambiar la estructura de enlaces permanentes en WordPress
Antes de implementar la redirección, es importante configurar la estructura de enlaces permanentes en WordPress para incluir el prefijo /blog
.
- Accede a WordPress Admin: Inicia sesión en el panel de administración de WordPress.
- Ajustes de Enlaces Permanentes:
- Dirígete a
Ajustes > Enlaces permanentes
. - Selecciona la opción «Estructura personalizada».
- Ingresa
/blog/%postname%/
en el campo de texto. - Guarda los cambios.
Paso 2: Implementar la redirección
Ahora, vamos a añadir el código necesario ya sea en un plugin de snippets o en tu plugin de funciones. Este código verificará si la URL de la página actual no contiene /blog
, y si es así, redirigirá a la misma URL con el prefijo /blog
.
/*Redireccionar Entradas y otras Single tras añadir /blog como prefijo*/
function eg_redirect_url_noprefix() {
//URL not found y no contiene /blog
if (is_404() && strpos($_SERVER['REQUEST_URI'], '/blog') === false) {
//Construir nueva URL
$requested_url = home_url($_SERVER['REQUEST_URI']);
$redirect_url = home_url('/blog' . $_SERVER['REQUEST_URI']);
// Comprueba si la URL con /blog existe
$response = wp_remote_head($redirect_url);
if (is_wp_error( $response )) {
//Si por algún motivo devuelve error, salimos
return;
} else {
$response_code = wp_remote_retrieve_response_code($response);
}
//Si el status code es diferente a "not found", redireccionamos
if ($response_code != 404) {
wp_redirect($redirect_url, 301);
exit();
}
}
}
add_action('template_redirect', 'eg_redirect_url_noprefix');
Explicación del Código
eg_redirect_url_noprefix()
: Esta función se ejecuta en la accióntemplate_redirect
, que ocurre antes de cargar la plantilla de WordPress. Aquí se implementa la lógica para redirigir las URLs según las condiciones especificadas.is_404()
: Comprueba si la página actual es un error 404. Si es así, se procede con la redirección.$requested_url
: Obtiene la URL solicitada actualmente.$redirect_url
: Construye la nueva URL con el prefijo/blog
.wp_remote_head($redirect_url)
: Realiza una solicitud HEAD (cabecera) a la nueva URL para verificar si existe.$response_code
: Obtiene el código de respuesta HTTP de la solicitud HEAD.if ($response_code != 404):
Asegura que la solicitud HEAD a la nueva URL no devuelva un código de error 404.wp_redirect($redirect_url, 301)
: Si ambas condiciones se cumplen, se realiza la redirección permanente (301) a la nueva URL con el prefijo/blog
.exit()
: Termina el script para asegurar que la redirección se ejecute correctamente.
Variaciones y Consideraciones Adicionales
- Personalizar el Prefijo: Si prefieres usar un prefijo diferente en lugar de
/blog
, simplemente ajusta la cadena/blog
en el código según tus necesidades (por ejemplo,/noticias
,/articulos
, etc.). - Excluir Páginas Específicas: Si deseas excluir ciertas páginas de la redirección, puedes agregar condiciones adicionales en la función
custom_redirect_to_blog_prefix()
usandois_singular()
para identificar tipos de contenido específicos (como páginas). - Monitorear Errores: Asegúrate de monitorear cualquier error o comportamiento inesperado después de implementar la redirección para ajustar el código según sea necesario.
Conclusión
Implementar esta redirección te permitirá mantener la consistencia y la estructura deseada en las URLs de tu sitio web WordPress, asegurando que las entradas y páginas individuales se redirijan correctamente con el prefijo /blog
añadido. Este método basado en PHP te ofrece flexibilidad y control sobre cómo manejar las URLs en tu sitio.