Redirección de WooCommerce después de cerrar sesión [Guía definitiva]

Publicado: 2022-01-10

Redirección de WooCommerce después de cerrar sesión La redirección de WooCommerce después de cerrar sesión se puede crear usando el código en esta publicación para redirigir a los clientes de WooCommerce a una página o publicación específica o a una URL externa después de cerrar sesión. En este artículo, quiero demostrar cómo crear esta redirección con código. Si te perdiste mi tutorial anterior, ilustré cómo crear un código abreviado de página de cierre de sesión de WooCommerce, que puede ser un buen lugar para comenzar antes de crear la redirección de cierre de sesión de WooCommerce.

Hay complementos que se pueden usar para crear redireccionamientos de cierre de sesión de WooCommerce, pero no son tan buenos como deberían ser; Estoy trabajando en una mejor solución que lo ayudará a administrar la redirección de WooCommerce después de cerrar sesión, al igual que el complemento que creé para WooCommerce Logout After Checkout.

Si desea ser uno de los primeros en adoptar, comuníquese conmigo para que pueda agregarlo a la lista, ya que el complemento estará listo dentro de 2 semanas a partir de hoy.

Para esta publicación, quiero compartir el enfoque del código que puede usar para crear una redirección de cierre de sesión eficiente de WooCommerce, pero el complemento tendrá varias opciones condicionales que amplían las opciones de redirección predeterminadas como lo logré en el complemento WooCommerce Redirect after checkout.

Secciones de redirección de cierre de sesión de WooCommerce: hojear y saltar a la sección

En la mayoría de los proyectos de mis clientes, estaba teniendo dificultades para que la redirección de cierre de sesión funcionara en sitios de WooCommerce. Por esta razón, decidí armar esta guía definitiva para crear una redirección de WooCommerce después de la guía de cierre de sesión.

Espero que pueda ser un gran lugar para que tanto los usuarios expertos en tecnología como los usuarios que no conocen la tecnología encuentren una solución para crear la mejor opción de redirección de cierre de sesión de WooCommerce para sus proyectos.

Dado que esta no es una publicación de blog ordinaria, es larga y puede llevar más tiempo leer y comprender cada detalle. Me gustaría ayudarlo a hojear las diferentes secciones para que pueda elegir rápidamente la solución que necesita para su proyecto.

Tabla de contenido

  1. Redirección de la página de inicio: después de cerrar la sesión, redireccionar a la página de inicio en Woocommerce
  2. Redirección de página actual: botón de cierre de sesión de Woocommerce y redirección a la página actual
  3. Página específica por redirección de ID – Página de redirección de cierre de sesión de Woocommerce
  4. Redirección del rol del cliente – Redirección de cierre de sesión del cliente de Woocommerce
  5. Redirección de página anterior: redirección de inicio de sesión de Woocommerce a la página anterior
  6. Redirección de la página de mi cuenta – Redirección de cierre de sesión de mi cuenta de Woocommerce
  7. Redirección de URL externa: función de redirección de cierre de sesión de Woocommerce Php Snippet
  8. Reparar el error de redirección de cierre de sesión: la redirección de cierre de sesión de Woocommerce no funciona
  9. URL de redirección de cierre de sesión de WP – URL de cierre de sesión de Woocommerce
  10. Complemento de redirección de cierre de sesión de Woocommerce
  11. Creación de redirección de cierre de sesión en WordPress - Funciones principales
  12. Redirección de inicio de sesión de WooCommerce: gancho woocommerce_login_redirect
  13. Función de cierre de sesión de WordPress – wp_logout_url()
  14. Gancho de filtro de WordPress logout_redirect
  15. Gancho de filtro de WordPress login_redirect
  16. Redirección multisitio de WooCommerce después de cerrar sesión
  17. Gancho de filtro: allow_redirect_hosts
  18. Función de redireccionamiento de WordPress: wp_ Redirect
  19. Función de redirección de WordPress: wp_safe_redirect()
  20. Conclusión

Redirección de WooCommerce después de cerrar sesión

redirección de cierre de sesión de woocommerce De forma predeterminada, WooCommerce después de cerrar sesión, registrarse e iniciar sesión redirige a los usuarios a "mi cuenta". Este comportamiento no es deseable, especialmente en sitios web que están orientados a aumentar sus ventas.

Las tres acciones de administración de usuarios más comunes en su sitio de WooCommerce incluyen:

  • registro de usuario
  • Inicio de sesión de usuario
  • registro de usuario
  • Editar perfil de usuario
  • Cerrar sesión de usuario

Cada una de estas acciones se puede mejorar no solo para que sea más fácil para el usuario navegar sin problemas, sino también para aumentar las perspectivas de ventas para clientes nuevos y existentes. La URL o el enlace de cierre de sesión de Woocommerce se encuentra de forma predeterminada en la página Mi cuenta y la mayoría de los propietarios de tiendas WooCommerce desean cambiar la redirección de cierre de sesión en la página Mi cuenta para redirigir a una página específica o al embudo de ventas de WooCommerce.

¿Cómo redirigir el cierre de sesión desde la página Mi cuenta?

Una de las preguntas más comunes sobre el cierre de sesión de WooCommerce es cómo crear un cierre de sesión automático desde la página Mi cuenta y redirigir a otro sitio web o a una página interna.

Esta es la pregunta que se abordará y resolverá en esta publicación, al final de este tutorial, debe crear cómodamente una redirección de cierre de sesión personalizada de WooCommerce, incluso con poco o ningún conocimiento previo de codificación.

redirección de woocommerce después de cerrar sesión Página de mi cuenta

¿Por qué crear una redirección de cierre de sesión de WooCommerce?

Un buen sitio web de comercio electrónico debe aprovechar todas las oportunidades para redirigir a los usuarios a las páginas que pueden aumentar las ventas y las conversiones después de cada acción: inicio de sesión, cierre de sesión, carrito, pago, registro, etc.

Se trata de crear un buen embudo de ventas de WooCommerce para promover ventas cruzadas de otros productos, ventas bajas y otros productos relacionados o productos más vendidos.

Los redireccionamientos de cierre de sesión de WooCommerce le permiten aumentar su tasa de conversión de ventas al redirigir a los clientes después del cierre de sesión a una página de destino de ventas o una página de redireccionamiento de embudo de WooCommerce estratégica, en lugar de redirigir al cliente a la página predeterminada "mi cuenta".

Este tutorial le mostrará cómo cambiar la configuración predeterminada de la redirección de WooCommerce después de cerrar la sesión y redirigir a los usuarios a URL personalizadas como "embudos de ventas", "ofertas especiales", "catálogo", la página anterior, la página de destino especial o cualquier enlace externo que es adecuado para aumentar las ventas y las conversiones.

En esta publicación, compartiré con usted un consejo rápido sobre cómo crear una redirección personalizada después de cerrar la sesión de WooCommerce, tal como compartí anteriormente cómo crear una redirección de WooCommerce después del pago. Idealmente, el cierre de sesión predeterminado de WooCommerce no es tan sencillo como debería ser. Muestra un mensaje de confirmación que molesta a varios usuarios.

Discutí anteriormente cómo eliminar el mensaje de confirmación de cierre de sesión de WooCommerce, lo que facilita que sus clientes cierren sesión automáticamente en su sitio de WooCommerce sin que aparezca el mensaje de confirmación.

También compartí el fragmento de código de cierre de sesión de WooCommerce que puede ampliar en este tutorial para hacerlo más eficiente agregando la opción de redirección, tal como lo hice en la redirección de WooCommerce después del complemento de pago que presenta opciones de redirección condicional.

Cambiar la redirección de cierre de sesión de WooCommerce cambiar la redirección de cierre de sesión de woocommerce

Cambiar la redirección de cierre de sesión de WooCommerce es otra mejora importante de la experiencia de cierre de sesión del cliente que debe considerar, tal como ilustré cómo agregar el enlace de cierre de sesión de WooCommerce al menú.

Entonces, profundicemos ahora en la creación de la mejor opción de redirección de cierre de sesión de WooCommerce que puede implementar de inmediato en su tienda para mejorar la experiencia del usuario.

Esta opción es simple ya que necesitamos usar un filtro para verificar el evento de cierre de sesión cuando ocurre.

Cuando se produce el cierre de sesión de WooCommerce, podemos conectarnos a este gancho: woocommerce_login_redirect y luego pasar una función de devolución de llamada con nuestra lógica de redireccionamiento a la página a la que queremos redirigir al usuario después del cierre de sesión.

Si no está familiarizado con los ganchos de acción y los ganchos de filtro de WooCommerce o WordPress, este tutorial sobre los ganchos apply_filters y do_action puede ser un buen lugar para comenzar a acostumbrarse a los filtros y ganchos.

Siempre es una buena práctica antes de comenzar a crear la función de redirección de cierre de sesión de WooCommerce, debe verificar si el usuario ha iniciado sesión. Ahora, describamos las diversas opciones que puede usar para crear la redirección de cierre de sesión de WooCommerce.

Cada una de estas funciones utiliza ganchos de acción y funciones predeterminados de WooCommerce y WordPress que se analizan en detalle en las otras secciones de este tutorial.

Redirección de la página de inicio: después de cerrar la sesión, redireccionar a la página de inicio en Woocommerce

Uno de los redireccionamientos más comunes de WooCommerce después de cerrar sesión es a la página de inicio. De forma predeterminada, WooCommerce redirige a la página Mi cuenta después de que se completa el cierre de sesión.

Si desea redirigir al usuario a la página de inicio, debería considerar agregar este código a su archivo functions.php del tema WooCommerce activo.

Simplemente copie este código en el archivo functions.php de su tema y pruebe para ver si el usuario de WooCommerce es redirigido a la página de inicio después del cierre de sesión.

Redirigir a la página de inicio después del fragmento de cierre de sesión

También puede agregar este fragmento de código al archivo de complementos y funcionará sin problemas.

 add_action('wp_logout','njengah_homepage_logout_redirect');

función njengah_homepage_logout_redirect(){

    wp_redirect(dirección_inicio());

    Salida;

}

Cómo funciona el código de redirección

Hay dos funciones y un enlace de acción que se usan en este código para crear la redirección de WooCommerce después de cerrar sesión como en el código anterior. Analicemos detenidamente el papel de cada una de estas funciones y enlace:

Gancho: wp_logout

Este código utiliza el enlace de acción wp_logout que se ha discutido en detalle en este artículo en la sección – Enlace de WordPress – wp_logout. Idealmente, este es un gancho de cierre de sesión predeterminado de WordPress que se activa después de que se haya ejecutado el cierre de sesión.

Función: wp_redirect()

En este caso, si observa la función de devolución de llamada, si hace uso de la función wp_redirect() que también se ha explicado en detalle en la sección Función wp_redirect de WordPress.

Función: home_url()

La función final utilizada en la función de devolución de llamada es home_url() , esta es una función de WordPress que devuelve la URL de la página de inicio del sitio actual.

home_url( string $path = '', string|null $scheme = null )

Por ejemplo, puede mostrar la URL de la página de inicio del sitio actual usando la función home_url() de la siguiente manera:

 $url = home_url();

echo $url;

Entonces, en este caso de la redirección de WooCommerce después de cerrar la sesión, devolverá la URL del sitio actual y la agregará como una cadena a la función wp_redirect() .

Para que entendamos cómo funciona el gancho de redirección de cierre de sesión de WooCommerce a medida que lo aplicamos en su código, debemos observar cada una de estas funciones predeterminadas de WordPress y el papel que desempeñan en la creación de redireccionamientos.

Redirección de la página actual: botón de cierre de sesión de Woocommerce y redirección a la página actual

La segunda redirección de WooCommerce más común después de cerrar sesión es la redirección a la página actual después de que un usuario cierra sesión. Esto es importante cuando desea que el usuario permanezca en la misma página en la que estaba cuando cerró la sesión.

En este caso, necesitamos conocer la página del usuario actual y aplicarla a la lógica de redirección de cierre de sesión de WooCommerce.

Para crear una redirección de WooCommerce a la página actual después del evento de cierre de sesión, necesitamos usar la función get_permalink() para informarnos la página actual y luego aplicarla a la función de devolución de llamada de cierre de sesión.

En este caso, debe agregar el siguiente fragmento de código a sus functions.php o a sus archivos de complemento para ejecutar la redirección de WooCommerce después de cerrar sesión en la página actual.

 función njengah_redirect_current_page_after_logout( $logout_url, $redirect ){

       devolver $logout_url . '&redirect_to=' . get_permalink();

}

add_filter('logout_url', 'njengah_redirect_current_page_after_logout', 10, 2);

Cómo funciona el código

Este código se compone de un gancho de filtro logout_url y la función de devolución de llamada tiene la función de WordPress get_permalink() que establece la página actual para los usuarios de la interfaz y la usa para devolver la URL de cierre de sesión.

Filtro: cerrar sesión_url()

En este caso, hemos utilizado logout_url que es otro filtro central de cierre de sesión de WordPress y WooCommerce que se ha discutido en detalle en la sección debajo de la función de WordPress logout_url .

Es posible que este código no funcione para todos los usuarios y es probable que falle para los usuarios en el backend de administración. Esta es una redirección adecuada después de cerrar la sesión para los clientes en la página Mi cuenta, pero no para otros roles.

Para que funcione también para los usuarios en el backend, debemos reemplazar la función get_permalink() con el valor de consulta HTTP que representa la página actual.

PHP Súper Global $_SERVER['HTTP_HOST']

Entonces, en ese caso, debemos agregar este súper global $_SERVER['HTTP_HOST'] como alternativa a la función get_permalink() . $_SERVER es una variable súper global de PHP que contiene información sobre encabezados, rutas y ubicaciones de secuencias de comandos.

El súper global $_SERVER['HTTP_HOST'] devuelve el encabezado Host de la solicitud actual. Por lo tanto, nos ayuda a obtener la página actual para que podamos aplicarla a la URL de redirección de WooCommerce después de cerrar sesión. El nuevo código que funciona para todos los usuarios debería ser el siguiente:

 función njengah_redirect_current_page_after_logout( $logout_url, $redirect ){

      devolver $logout_url . '&redirect_to=http://' . $_SERVIDOR['HTTP_HOST'] . $_SERVIDOR['SOLICITUD_URI'];

}

add_filter('logout_url', 'njengah_redirect_current_page_after_logout', 10, 2);

Ahora puede crear un botón para cerrar el enlace de redirección siguiendo el tutorial que compartí anteriormente sobre cómo crear un botón de cierre de sesión de WooCommerce.

Redirección de página específica: página de redirección de cierre de sesión de Woocommerce (por ID)

En algunos casos, es posible que desee redirigir a los usuarios a una página específica después de cerrar la sesión. La página se puede agregar a la lógica de redirección de cierre de sesión de WooCommerce usando la identificación de la página.

En este caso, debe conocer la ID de la página para pasarla en la función de redirección. Puede lograr la redirección de cierre de sesión de WooCommerce a una página específica por identificación utilizando el siguiente fragmento de código.

 add_action('wp_logout','njengah_specific_page_logout_redirect');

función njengah_specific_page_logout_redirect(){

    wp_redirect( get_permalink($pageId) );

    Salida;

}

Cómo funciona el código

Este código usa el gancho de acción wp_logout y en la función de devolución de llamada tenemos la función get_permalink() con una variable $pageID que debe ser reemplazada por la ID de la página a la que desea redirigir al usuario después del pago.

Si no está seguro acerca de la ID de la página, puede usar esta publicación que escribí sobre cómo obtener la ID de la página en WordPress.

Función WooCommerce: wc_get_page_id()

También puede usar el nombre de la página a la que desea redirigir al usuario junto con la función de WooCommerce wc_get_page_id() como en el fragmento de código a continuación:

 add_action('wp_logout','njengah_specific_page_logout_redirect');

función njengah_specific_page_logout_redirect(){

       wp_redirect( get_permalink( wc_get_page_id( 'shop' ) ) );

      Salida;

}

La función wc_get_page_id() recupera ID de página y se usa comúnmente para myaccount, edit_address, shop, cart, checkout, pay, view_order, terms y devuelve -1 si no se encuentra ninguna página.

Redirección del rol del cliente – Redirección de cierre de sesión del cliente de Woocommerce

Otro escenario de redireccionamiento de WooCommerce después del cierre de sesión es donde desea redirigir a los usuarios según el rol. Probablemente desee redirigir al cliente a una página determinada después de que cierre sesión en lugar de la redirección predeterminada de Mi cuenta después de cerrar sesión.

En este caso, puede ejecutar la redirección después de cerrar la sesión solo para el rol del cliente u otro rol o un grupo de roles utilizando el fragmento de código que se comparte a continuación:

 if( is_user_logged_in() ) { // comprobar si hay un usuario conectado       

    $usuario = wp_get_current_user(); // obteniendo y configurando el usuario actual

          $roles = (arreglo) $usuario->roles; // obteniendo el rol

           // $roles[0]; // Devuelve un rol

            //devuelve $roles; // devuelve la matriz de los roles

             // Haz la comparación aquí 

              if($roles[0] == 'cliente'){

                 // Ejecutar la redirección si el rol del usuario actual es igual a cliente

                    add_action('wp_logout','njengah_specific_page_logout_redirect');

                       función njengah_specific_page_logout_redirect(){

                        wp_redirect( get_permalink($pageId) );

                             Salida;

                   }

           }

 }

Cómo funciona el código

Comenzamos comprobando si el usuario ha iniciado sesión como expliqué en una publicación anterior sobre cómo encontrar si el usuario de WordPress ha iniciado sesión.

Obtener el rol de usuario

El segundo paso fue obtener el rol del usuario actual en WordPress usando la función wp_get_current_user() y exigiendo el rol del usuario actual.

Compare y ejecute la redirección si el rol coincide con el cliente

El tercer paso ha sido ahora hacer la comparación del rol obtenido en el paso anterior con el rol del cliente y si el rol coincide ahora agregas la acción de redirección y la función.

Puede sustituir el rol con otro rol, incluidos los roles personalizados. También puede cambiar la página de redirección pasando un ID de página diferente en la función get_permalink() .

Redirección de página anterior: redirección de cierre de sesión de Woocommerce a la página anterior

Puede crear una redirección de WooCommerce después de cerrar sesión en la página anterior usando las sesiones. En este caso, debe crear una sesión y agregarla a una función y usarla en la lógica para crear la redirección después de cerrar sesión en la página anterior.

Puede usar el fragmento de código a continuación para crear la redirección de cierre de sesión de WooCommerce a la página anterior:

 // Iniciar sesión global para guardar la URL de referencia
función inicio_sesión() {
     sesión_inicio();
}

add_action('init', 'start_session', 1);

// Obtenga la URL de referencia y guárdela

función redirigir_url() {
    si (es_usuario_logged_in()) {
        $_SESSION['referer_url'] = wp_get_referer();
    } demás {
        session_destroy();
    }

}
add_action('template_redirect', 'redirect_url');

// Redirección de cierre de sesión

función njengah_logout_redirect() {

    if (isset($_SESSION['referer_url'])) {

        wp_redirect($_SESSION['referer_url']);

    } demás {

        wp_redirect(URL_inicio());

    }

}

add_filter('wp_logout', 'njengah_logout_redirect', 1100, 2);

Cómo funciona el código

Este código usó las sesiones de PHP para crear una sesión y guardar la URL de la página actual y en la función de redirección probamos la URL de la sesión establecida: $_SESSION['referer_url'] .

Si está configurado, creamos el redireccionamiento a esa página como en los otros redireccionamientos de cierre de sesión que discutimos anteriormente.

Redirección de la página de mi cuenta – Redirección de cierre de sesión de mi cuenta de Woocommerce

La redirección de cierre de sesión de WooCommerce desde la página Mi cuenta es una de las preguntas más frecuentes sobre el cierre de sesión de WooCommerce.

Esto no es diferente de otras redirecciones de cierre de sesión; de hecho, puede agregar una redirección de cierre de sesión en la página Mi cuenta usando el fragmento de código a continuación:

 add_action('wp_logout','njengah_my_account_page_logout_redirect');

función njengah_my_account_page_logout_redirect(){

       wp_redirect( get_permalink($pageId) );

                Salida;

}

Puede cambiar el valor de la variable $pageID en la función get_permalink() para que se corresponda con el ID de página de la página o publicación de redirección y esto funcionará sin problemas.

Redirección de URL externa: función de redirección de cierre de sesión de Woocommerce Php Snippet:

Si desea redirigir a los usuarios a una URL externa después de que cierren sesión en su tienda WooCommerce, puede hacerlo utilizando un fragmento agregado a las funciones de su tema o en un complemento personalizado.

Este fragmento de php de la función de redireccionamiento de cierre de sesión de WooCommerce que se puede agregar al archivo functions.php para crear el redireccionamiento después del cierre de sesión es el siguiente:

 add_action('wp_logout','njengah_redirect_after_logout');

función njengah_redirect_after_logout(){

  wp_redirect ($url);

  Salida();

}

Simplemente agregue este fragmento de código en functions.php y reemplace la variable $url con su URL de redirección respectiva entre comillas.

Por ejemplo, si desea redirigir al usuario a una URL externa después de cerrar la sesión y la URL externa es http://example.com , puede reemplazar la variable $url con la URL completa como se muestra en el siguiente código:

 add_action('wp_logout','njengah_redirect_after_logout');

función njengah_redirect_after_logout(){

    wp_redirect('http://ejemplo.com');

    Salida();

}

URL de redirección de cierre de sesión de WP – URL de cierre de sesión de Woocommerce

Si desea crear un botón de cierre de sesión de WooCommerce y colocarlo en una plantilla personalizada o en cualquier otra página, le ayudará a conocer la URL de redirección de cierre de sesión de WP que puede agregar fácilmente en cualquier botón o enlace.

La siguiente es la URL de redirección de cierre de sesión de WP que se puede cambiar a cualquier otra página cambiando el parámetro 'mi cuenta' "

 wp_logout_url(

    get_permalink( wc_get_page_id( 'micuenta' ) )

 );

También puede tener la URL externa en la URL de redirección de cierre de sesión de WooCommerce de la siguiente manera:

 wp_logout_url(

   'http://ejemplo.com/'

);

También puede agregar las funciones de WordPress a la URL de redirección de cierre de sesión de WP de la siguiente manera:

 wp_logout_url(

    url_inicio()

);

Esta URL de redirección de cierre de sesión de WP se puede agregar en plantillas personalizadas y también se puede usar en códigos cortos o botones para mostrar una opción de cierre de sesión en lugares que no son las ubicaciones predeterminadas para el botón de cierre de sesión, como widgets, pie de página, menú de la barra superior y mucho más.

Arreglar el error de redirección de cierre de sesión: la redirección de cierre de sesión de Woocommerce no funciona

Si ha personalizado la redirección de cierre de sesión de WooCommerce y no funciona, probablemente haya un error en su código o una de las siguientes razones.

Prioridad de gancho

El primer paso es verificar la prioridad de su add_action() o add_filter() en comparación con los otros ganchos de WordPress. Esta es una de las causas más comunes del error de redirección de cierre de sesión.

Cuanto mayor sea la prioridad del gancho, antes se producirá la carga. Si los dos ganchos tienen la misma prioridad, se carga primero el que está colocado encima del otro. Ajustar la prioridad de la acción o el enlace del filtro puede ser un buen lugar para comenzar la depuración.

Error de código: error de sintaxis

El segundo paso que debe verificar si todo el código tiene un error y un error común es un error de sintaxis. Posiblemente, mientras edita el código, puede olvidarse de colocar una comilla de cierre o un corchete.

Contador verifique el código y preferiblemente agregue el código a un verificador de errores de sintaxis de PHP.

Es mejor si está familiarizado con herramientas como Visual Studio o IDE como Netbeans, ya que estas herramientas pueden ayudarlo rápidamente a detectar errores de sintaxis en su código.

Código agregado al archivo incorrecto

Otra causa común del error de redirección de cierre de sesión de WooCommerce que no funciona es cuando tienes el código correcto pero lo agregas en el lugar equivocado. En este caso, si está agregando el código a un tema, debe agregarse estrictamente al archivo functions.php.

Al agregar este código a un complemento, debe tener cuidado de no agregarlo dentro de una clase que no esté instanciada. Es una buena idea agregarlo al archivo base del complemento y también corregir cualquier cambio que pueda ser necesario para garantizar que el código encaje en el contexto de la estructura de archivos de su complemento personalizado.

Conflictos de complementos o temas

En la mayoría de los casos, hay complementos o temas que controlan el redireccionamiento de inicio y cierre de sesión en WooCommerce. Estos complementos pueden entrar en conflicto y provocar el error de redirección de cierre de sesión.

Si está experimentando un error de cierre de sesión de redireccionamiento de WooCommerce, puede comenzar por desactivar todos los complementos y usar el tema predeterminado de WordPress para verificar si el error es causado por un conflicto de complemento o tema.

Complemento de redirección de cierre de sesión de Woocommerce

Finalmente, nada hace que sea más fácil agregar la redirección de WooCommerce después de cerrar sesión que un complemento bien codificado con las funciones adecuadas, una buena experiencia de usuario y soporte de clase mundial. Durante años, he solucionado cientos de problemas de cierre de sesión, inicio de sesión y registro en WooCommerce y WordPress en general.

En las últimas semanas, he reunido toda mi experiencia y lecciones aprendidas sobre las redirecciones y el cierre de sesión de WooCommerce. He creado una notable URL de redirección de cierre de sesión de WooCommerce que consta de las siguientes características:

Funciones de redirección de cierre de sesión

  • Redireccionamiento de WooCommerce después de cerrar sesión en cualquier página: seleccione la página de una lista desplegable
  • Redireccionamiento de WooCommerce después de cerrar sesión a cualquier producto individual: seleccione el producto de una lista desplegable
  • Redirección de WooCommerce después de cerrar sesión en cualquier publicación individual: seleccione la publicación de una lista desplegable
  • Redireccionamiento de WooCommerce después de cerrar sesión a cualquier categoría de producto: seleccione la categoría de producto de una lista desplegable
  • Redirección de WooCommerce después de cerrar sesión en la página actual
  • Redireccionamiento de WooCommerce después de cerrar sesión a la página anterior
  • Redireccionamiento de WooCommerce después de cerrar sesión a URL externa
  • Redireccionamiento de WooCommerce después de cerrar sesión según el rol
  • Redirección de WooCommerce después de cerrar sesión según el historial de compras (adecuado para ofertas especiales)
  • WooCommerce fuerza el cierre de sesión después del pago

Funciones de redirección de inicio de sesión

  • Redirección de WooCommerce después de iniciar sesión en cualquier página: seleccione la página de una lista desplegable
  • Redirección de WooCommerce después de iniciar sesión en cualquier producto individual: seleccione el producto de una lista desplegable
  • Redirección de WooCommerce después de iniciar sesión en cualquier publicación individual: seleccione la publicación de una lista desplegable
  • Redirección de WooCommerce después de iniciar sesión en cualquier categoría de producto: seleccione la categoría de producto de una lista desplegable
  • Redirección de WooCommerce después de iniciar sesión en la página actual
  • Redirección de WooCommerce después de iniciar sesión en la página anterior
  • Redirección de WooCommerce después de iniciar sesión en URL externa
  • Redirección de WooCommerce después de iniciar sesión según el rol
  • Redirección de WooCommerce después de iniciar sesión según el historial de compras (adecuado para ofertas especiales)

El complemento WooCommerce Redirect after Login & Logout (WRAL) se lanzará en las próximas semanas. Si desea ser uno de los primeros en adoptar, no se quede atrás, ya que el lanzamiento vendrá con un 70% de descuento.

Puede unirse a la lista de los primeros 100 primeros usuarios poniéndose en contacto conmigo de inmediato. Su lanzamiento está previsto para el 2 de noviembre de 2020 .

Creación de redirección de cierre de sesión en WordPress - Funciones principales

Después de ver la forma rápida de agregar fragmentos para crear una redirección de WooCommerce después del cierre de sesión, es útil resaltar las funciones y ganchos de cierre de sesión predeterminados de WordPress y explicar en detalle a los desarrolladores que están leyendo esta guía para comprender cómo funcionan estos redireccionamientos.

Estas funciones y gancho de acción pueden ser útiles para crear una redirección de WooCommerce después de cerrar la sesión. En general, puede crear una redirección de cierre de sesión de WooCommerce utilizando los siguientes ganchos y funciones:

  • función wp_logout_url()
  • gancho de acción wp_logout
  • filtro logout_redirect

Quiero explicar cada una de estas funciones y cómo puede usarlas para crear una redirección de WooCommerce después del pago y por qué es posible que desee usar una sobre la otra.

También es importante resaltar la forma en que puede crear una redirección de inicio de sesión de WooCommerce utilizando filtros. También hay una función que es útil para crear una redirección de inicio de sesión en WooCommerce. Comencemos con el enlace de redirección de inicio de sesión que es muy útil para crear una redirección de inicio de sesión en WooCommerce.

Redirección de inicio de sesión de WooCommerce: gancho woocommerce_login_redirect

Este es el gancho especial de WooCommerce que nos permite controlar las funciones de redirección de inicio de sesión en WooCommerce. Es similar a la función predeterminada de cierre de sesión de WordPress que se aplica al crear una redirección de WooCommerce después del cierre de sesión. Su uso básico es el siguiente:

apply_filters( 'woocommerce_login_redirect', $redirect, $user );

Como puede ver, toma 2 parámetros y los parámetros son los siguientes:

Parámetro Descripción Ejemplo(s) de uso
$redirect Esta es la página de redireccionamiento donde el usuario aterrizará después del inicio de sesión.

Puede ser útil para cambiar la redirección predeterminada de WooCommerce después de iniciar sesión para permitir que el usuario llegue a la página específica después de iniciar sesión.

add_filter('woocommerce_login_redirect', 'login_redirect')

Puede agregar el gancho de filtro y en la función de devolución de llamada puede pasar la lógica de redirección de la siguiente manera:

function login_redirect($redirect_to){
return home_url();
}

Como puede ver, agregué el parámetro $redirect_to y devolví la URL de redirección para redirigir al usuario a la página de inicio después del inicio de sesión.

$user Este es el usuario al que se aplica la acción de redirección.

Esto puede ser particularmente útil cuando desea crear una redirección después de iniciar sesión para usuarios específicos.

Gancho: woocommerce_login_redirect no funciona

Este código se puede usar en los temas y el código del complemento, pero debe comprender las prioridades para evitar disparar demasiado temprano o tarde, lo que conducirá al escenario común de que woocommerce_login_redirect no funciona.

También debe averiguar otras razones que pueden hacer que woocommerce_login_redirect no funcione. De particular interés es otro complemento que tiene una función similar o la misma que funciona antes de que se active su código.

Entonces, si descubre que woocommerce_login_redirect no funciona, lo primero que debe verificar es la prioridad de un ejemplo de caso, puede tener estos dos fragmentos de código:

# Menor Prioridad

add_filter( 'woocommerce_login_redirect', 'njengah_login_redirect', 1100, 2 );

# Prioridad más alta

add_filter( 'woocommerce_login_redirect', 'njengah_login_redirect', 10, 2 );

Como puede ver, en ambos casos, los números de prioridad son diferentes, la regla básica es que cuanto menor sea el número, mayor será la prioridad, lo que significa que se carga primero.

Cuando tiene esta función utilizada en otra parte de su tema u otro complemento y está intentando recrear la redirección de WooCommerce después de la función de inicio o cierre de sesión, debe prestar atención a la prioridad. Esta es la solución para solucionar el problema de que woocommerce_login_redirect no funciona.

Función de cierre de sesión de WordPress – wp_logout_url()

Esta función es responsable de crear la URL de cierre de sesión en WordPress.

Ayuda a los desarrolladores y usuarios de WordPress a crear rápidamente una URL de cierre de sesión que se puede agregar a un enlace o botón y se ilustra en este artículo: cómo crear una URL de cierre de sesión de WooCommerce .

WooCommerce amplía la funcionalidad al tener los puntos finales de URL que juegan un papel crucial para ayudar a los desarrolladores y usuarios a crear una página de cierre de sesión de WooCommerce sin ningún tipo de codificación.

Si desea comprender profundamente el proceso de cierre de sesión de WooCommerce y WordPress, es útil comenzar evaluando la función wp_logout_url() .

Es una función especial que encontrará en varios temas y complementos de WordPress y es una buena idea echar un vistazo a lo que sucede debajo del capó.

El uso básico de la función es el siguiente:

wp_logout_url( string $redirect = '' )

Como puede ver, la función toma un parámetro que es una cadena y los siguientes son los detalles del parámetro:

Parámetro Descripción Ejemplo(s) de uso
$redirect Este es un parámetro de cadena y es opcional agregarlo; puede dejarlo en blanco y la función funcionará.

Sin embargo, es útil en el caso de que desee agregar una URL de redireccionamiento a una página específica.

Entonces, en este caso, el parámetro $redirect es la URL de la página de redireccionamiento, el destino donde deberían aterrizar todos los usuarios que usan esta función en este contexto.

También puede pasar otras funciones como parámetros que devuelven estrictamente una cadena, ya que wp_logout_url() solo toma una cadena como parámetro.

Puede usar esta función junto con un enlace de la siguiente manera:

<a href="<?php echo wp_logout_url(); ?>">Logout</a>

Puede usar esta función y pasar otra función como parámetro que devuelve una cadena de la URL de redireccionamiento de la siguiente manera:

<a href="<?php echo wp_logout_url( home_url() ); ?>">Logout</a>

<a href="<?php echo wp_logout_url( get_permalink() ); ?>">Logout</a>

Si desea comprender mejor la función, es útil observar el código definido en el núcleo de WordPress. Este código de función principal es el siguiente:

 función wp_logout_url ($ redirigir = '') {
    $argumentos = matriz();
    si (! vacío ($ redirigir)) {
        $args['redirect_to'] = urlencode ($redirect);
    }
 
    $logout_url = add_query_arg( $args, site_url( 'wp-login.php?action=logout', 'login' ) );
    $logout_url = wp_nonce_url ($logout_url, 'cerrar sesión');
 
    /**
     * Filtra la URL de cierre de sesión.
     *
     * @desde 2.8.0
     *
     * @param string $logout_url La URL de cierre de sesión codificada en HTML.
     * @param string $redirect Ruta a la que redirigir al cerrar la sesión.
     */
    return apply_filters( 'logout_url', $logout_url, $redirect );
}

Gancho de acción: wp_logout

Este es un gancho de acción que se dispara cuando el usuario ha cerrado la sesión. Desempeña un papel importante en la creación de redirección después de la funcionalidad de cierre de sesión. El uso básico de esta función es el siguiente:

do_action( 'wp_logout', int $user_id )

Como puede ver, toma un parámetro y los detalles del parámetro son los siguientes:

Parámetro Descripción Ejemplo(s) de uso
$user_id Este es el ID del usuario que se ha desconectado. add_action('wp_logout','logout_redirect');

En este caso, lo hemos agregado como un enlace de acción y podemos pasar nuestra redirección después de la lógica de cierre de sesión en la función de devolución de llamada de la siguiente manera:

function logout_redirect(){

wp_redirect( home_url() );

exit;

}

Entonces, en este caso, estamos redirigiendo al usuario después de cerrar sesión a la página de inicio.

Estas funciones son útiles cuando desea controlar la redirección del usuario después de iniciar sesión o cerrar sesión.

Gancho de filtro de WordPress logout_redirect

Otro enlace de filtro que puede usar para crear una redirección después de cerrar sesión en WooCommerce es el enlace de filtro logout_redirect. Este gancho de filtro funciona como la función wp_logout_url() o el gancho de acción wp_logout.

Es un filtro básico de WordPress que está diseñado para ayudar a crear redirección de WordPress o WooCommerce después de cerrar la sesión. Su uso básico es el siguiente:

apply_filters( 'logout_redirect', string $redirect_to, string $requested_redirect_to, WP_User $user )

Como puede ver, tiene tres parámetros y el parámetro se puede describir en detalle de la siguiente manera:

Parámetro Descripción
$redirect_to Esta es la URL de destino de redireccionamiento y debe ser una cadena, por ejemplo, http://example.com
$requested_redirect_to Esta es la URL de destino de redirección solicitada que se pasa como parámetro y también debe ser una cadena como el primer parámetro.
$user Este es el objeto de usuario: objeto WP_User del usuario que se ha desconectado.

Puede crear una redirección de WordPress basada en filtros después de cerrar la sesión usando logout_redirect de la siguiente manera:

 add_filter('login_redirect', 'njengah_logout_redirect', 10, 3);

función njengah_logout_redirect ($ubicación, $solicitud, $usuario) {

  $usuario global;

if ( isset( $usuario->roles ) && is_array( $usuario->roles ) ) {

   if ( in_array( 'suscriptor', $usuario->roles ) ) {

       volver home_url();

          } demás {

        devolver $ redirigir_a;

      }

    }

   regreso;

}

Gancho de filtro de WordPress login_redirect

También es importante señalar que hay un filtro similar para el inicio de sesión: login_redirect funciona de la misma manera que el filtro logout_redirect. De hecho, el uso es similar y viene con 3 parámetros y la expresión general es la siguiente:

apply_filters( 'login_redirect', string $redirect_to, string $requested_redirect_to, WP_User|WP_Error $user )

The parameters are similar expect the last parameter that has two user object options as you will see in the detailed description below:

Parámetro Descripción
$redirect_to This is the redirect destination URL and it must be a string, for example, http://example.com
$requested_redirect_to This is the requested redirect destination URL that is passed as a parameter and it must also be a string just like the first parameter.
$user This is the user object – WP_User object of the user who has been logged in if the login was successful but for unsuccessful login the WP_Error object is represented by this parameter

As you can see there are several ways you can use to create a WordPress or WooCommerce logout redirect.

In a quick summary we have highlighted the three most important hooks you should consider using for creating the redirect after logout. These hooks include:

  • Default WordPress logout_redirect – using filter to create redirect after logout
  • Action hook wp_logout – fired after the logout and thus can be used to create redirect.
  • WordPress logout function wp_logout_url() – WordPress default function that retrieves the logout URL and this can be useful in adding a redirect since it takes one parameter for the redirect path.

WooCommerce Multisite Redirect After Logout

When you are creating a redirect after logout in WooCommerce the wp_logout hook may fail to work when you have a multisite. In this case you need a little creativity to control how to create the WooCommerce redirect after logout.

In fact in a multisite set up WordPress logout function requires you to filter the allowed URLs for redirect and this can easily be executed using the allowed_redirect_hosts filter.

It helps to understand how this filter hook works so that you can use it in the WooCommerce multisite redirect after checkout. So let's briefly look at this filter.

Filter Hook: allowed_redirect_hosts

This is a filter hook that filters all the allowed hosts to apply redirect to. So in simple terms it checks the redirect URLs and vets them. The basic usage of this filter is as follows:

apply_filters( 'allowed_redirect_hosts', string[] $hosts, string $host )

As you can see in the expression above, it takes two parameter and they can be explained in details as follows:

Parámetro Descripción Usage Example(s)
$hosts (string[]) This is simply an array with all the allowed host names add_filter( 'allowed_redirect_hosts', 'njengah_allow_parent_redirect' );

function njengah_allow_parent_redirect( $allowed ) {

$allowed[] = 'example.com'; // Multisite parent

return $allowed;

}

<a href="<?php echo wp_logout_url( 'http://example.com' ); ?>">Logout</a>

$host (string) This is the host name of the redirect destination.

This can be left empty.

You can add more hosts to the callback function and come up with code like this:

add_filter('hosts_redirect_permitidos', 'njengah_allow_parent_redirect');

función njengah_allow_parent_redirect ($ permitido) {
    $permitido = matriz(
    'blog.ejemplo.com',
    'codex.ejemplo.com',
     );
    return array_merge( $hosts, $permitido);
}

Esto simplemente tiene el propósito de validar las URL de redirección permitidas, lo cual es una adición importante a la redirección de WooCommerce de sitios múltiples después del cierre de sesión, ya que en la mayoría de los casos, la redirección wp_logout predeterminada fallará sin el filtrado de los hosts de redirección.

Función de redireccionamiento de WordPress: wp_ Redirect

Cuando crea una redirección en WooCommerce o WordPress, como expliqué en la publicación sobre cómo crear una redirección después de pagar en WooCommerce, necesita la función wp_redirect() .

Comprender el papel de esta función es crucial para crear la redirección de WooCommerce después del pago, ya que es la función central responsable de ejecutar las redirecciones en WordPress y WooCommerce. Describamos brevemente cómo funciona y el parámetro que toma. El uso general de la función wp_redirect() es el siguiente:

wp_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' )

Como puede ver, esta función toma tres parámetros y se pueden describir en detalle de la siguiente manera:

Parámetro Descripción
$location Esta es la ruta o URL donde redirigir al usuario. Debe ser una cadena y es necesaria para que funcione la función.
$status Este es el código de estado de respuesta HTTP que se debe aplicar a esta redirección y es un número entero y su uso es opcional.
Por ejemplo, puede agregar 301 para la redirección permanente o puede dejarlo como el valor predeterminado, que es 302, lo que significa que se movió temporalmente.
$x_redirect_by Esta es la aplicación que está realizando la redirección y, de forma predeterminada, es WordPress y rara vez debe desactivarse, ya que estamos creando la redirección de WooCommerce después de cerrar sesión, lo cual está dentro del contexto de WordPress.

Nota

Es importante comprender que cuando usa la función wp_redirect(), tit no sale por sí solo. Por lo tanto, es importante agregar siempre la salida después de la función, ya que la salida en PHP se usa para terminar el script en ejecución actual después de ejecutar la línea de código anterior. Entonces, la mejor manera de usar la función wp_redirect es la siguiente:

 wp_redirect ($url);

Salida

También puede crear una redirección condicional usando la función wp_redirect con la if statement de la siguiente manera:

 si (wp_redirect ($url)) {

   Salida;

}

Esta función se puede usar junto con template_redirect hook como en el siguiente código:

 función njengah_wp_redirect_example() {

    if (is_user_logged_in() && is_page( $id ) ){

        wp_redirect( get_permalink( $id ) );

        Salida;

    }

}

add_action('template_redirect', 'njengah_wp_redirect_example');

Como puede ver en el código anterior, puede tomar una función como parámetro siempre que la función devuelva una cadena para el parámetro $ubicación, como es el caso de la función get_permalink( )

Función de redirección de WordPress: wp_safe_redirect()

El wp_safe_redirect() es la segunda función de redireccionamiento de WordPress que puede ser útil para ejecutar el redireccionamiento de WooCommerce después de cerrar sesión. Esta función funciona como la función wp_redirect() pero tiene una verificación adicional de la URL de redireccionamiento.

En la función wp_redirect, el parámetro $ubicación no se verifica, pero en la función wp_safe_redirect() , el parámetro $location se verifica para determinar si es un host permitido.

Esa es la diferencia entre las dos funciones de redirección. El uso general de esta función de redirección es similar al de wp_redirect y la expresión general es la siguiente:

wp_safe_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' )

Como se puede ver los parámetros son los mismos:

Parámetro Descripción
$location Esta es la ruta o URL donde redirigir al usuario. Debe ser una cadena y es necesaria para que funcione la función.
$status Este es el código de estado de respuesta HTTP que se debe aplicar a esta redirección y es un número entero y su uso es opcional.
Por ejemplo, puede agregar 301 para la redirección permanente o puede dejarlo como el valor predeterminado, que es 302, lo que significa que se movió temporalmente.
$x_redirect_by Esta es la aplicación que está realizando la redirección y, de forma predeterminada, es WordPress y rara vez debe desactivarse, ya que estamos creando la redirección de WooCommerce después de cerrar sesión, lo cual está dentro del contexto de WordPress.

Esta función permite a los desarrolladores de complementos configurar o eliminar la lista de hosts permitidos y, si el host no está en la lista de hosts permitidos, la redirección falla y el valor predeterminado es wp-admin.

Al igual que la función wp_redirect , wp_safe_redirect no se cierra automáticamente y también requiere que agregue exit como en los fragmentos de código a continuación:

 wp_safe_redirect ($url);

Salida;

También puede usarlo con una declaración condicional como en el ejemplo anterior:

 si (wp_safe_redirect ($url)) {

    Salida;

}

Conclusión

En esta publicación, describí las formas paso a paso en las que puede crear las diversas opciones de redirección de WooCommerce después de cerrar sesión. Ilustré con un ejemplo de código cómo crear el cierre de sesión de redireccionamiento de WordPress o WooCommerce utilizando la variedad de funciones y ganchos disponibles del núcleo de WordPress.

En un resumen rápido para resumir lo que cubrimos; cómo crear una redirección después de cerrar sesión a:

  • Redirección de cierre de sesión de la página actual
  • Redirección de cierre de sesión de la página anterior
  • Redirección de cierre de sesión de la página de inicio
  • Redirección de cierre de sesión de página específica
  • Redirección de cierre de sesión de URL externa

Espero que esta guía le brinde un excelente lugar para comenzar mientras crea una redirección de cierre de sesión en WooCommerce. Si desea compartir comentarios o contribuir a mejorar esta guía e incluso señalar errores o fallas, no dude en ponerse en contacto conmigo. Si le gusta esta guía, también puede consultar la otra guía que escribí sobre cómo crear una redirección de WooCommerce después de la compra.

Artículos similares

Las mejores listas de complementos de WooCommerce