Redirigir usuario después de cerrar sesión
Estoy intentando crear una página de cancelación de suscripción para mis miembros, pero para poder ver el formulario de cancelación, deben estar desconectados, por lo que el primer enlace es:
/wp-login.php?action=logout&_wpnonce=ba51bbcdc3.
Una vez que cierran sesión, necesito que sean redirigidos al formulario de cancelación, pero no puedo simplemente configurar una redirección, porque esta también es la página de inicio de sesión.

Puedes usar la etiqueta de plantilla wp_logout_url()
para generar un enlace de cierre de sesión. Puedes especificar la URL a la que se redirigirá al usuario como primer parámetro:
wp_logout_url( 'http://example.com' );
El código anterior generará una URL que se verá algo así: /wp-login.php?action=logout&_wpnonce=ba51bbcdc3&redirect_to=http://example.com/unsubscribe
. Puedes convertirlo en un enlace de la siguiente manera:
<a href="<?php echo wp_logout_url( home_url( 'unsubscribe' ) ); ?>" title="Cerrar sesión">Cerrar sesión & Cancelar suscripción</a>
Si deseas usar esto en una página o publicación, necesitas crear un shortcode:
function wpse_77939_unsubscribe_link() {
return sprintf(
'<a href="%s" title="Cerrar sesión">Cerrar sesión & Cancelar suscripción</a>',
wp_logout_url( home_url( 'unsubscribe' ) )
);
add_shortcode( 'unsubscribe-link', 'wpse_77939_unsubscribe_link' );
Luego puedes añadir [unsubscribe-link]
a una publicación o página donde quieras que aparezca el enlace.
Si estás redirigiendo a otro sitio web además del tuyo, necesitas añadir este código a tu archivo functions.php
(reemplaza example.com
con el dominio del sitio):
add_filter( 'allowed_redirect_hosts','wpse_77938_allowed_redirect_hosts' );
function wpse_77938_allowed_redirect_hosts( $allowed ) {
$allowed[] = 'example.com';
return $allowed;
}

WordPress incluye una etiqueta de plantilla que puedes utilizar: wp_logout_url()
. Son unas pocas líneas de código simples si deseas redirigir a los usuarios a otra URL después de que cierren sesión.
El año pasado escribí un tutorial sobre cómo usar esta etiqueta de plantilla. En resumen, necesitas crear un filtro en functions.php
y luego crear un enlace de Cerrar sesión en sidebar.php
.
Si estás redirigiendo a otro sitio web además del tuyo, necesitas agregar este código a tu archivo functions.php
(reemplaza example.com
con el dominio del sitio):
add_filter( 'allowed_redirect_hosts','wpse_77938_allowed_redirect_hosts' );
function wpse_77938_allowed_redirect_hosts($link) {
$link[] = 'example.com';
return $link;
}
Luego necesitas agregar esta línea a tu archivo sidebar.php
o en cualquier lugar donde puedas ejecutar PHP:
<a href="<?php echo wp_logout_url( 'http://example.com' ); ?>" title="Cerrar sesión">Cerrar sesión</a>
