Llega el Black Friday

50% de descuento en Productos y Mantenimiento (código BF24P)
20% de descuento en Consultoría y Packs de horas (código BF24S)

Mejora la organización de tu blog en WordPress: implementa un prefijo y automatiza redirecciones con este snippet

    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.

    1. Accede a WordPress Admin: Inicia sesión en el panel de administración de WordPress.
    2. 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ón template_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() usando is_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.

    Imagen destacada por StockSnap de Pixabay