Redirección a la página de inicio después de cerrar sesión
Estoy usando un menú personalizado para inicio/cierre de sesión, aquí está mi código:
<li>
<?php
if (is_user_logged_in()) {
$user = wp_get_current_user();
echo 'Bienvenido <strong><a href="http://kolkataonwheelsmagazine.com/wp-admin/index.php" >'.$user->user_firstname.'</a></strong>
| <a href="http://kolkataonwheelsmagazine.com/wp-login.php?action=logout"">Cerrar sesión</a>';
} else { ?>
<strong><?php wp_loginout(); ?></strong>
o <a href="<?php bloginfo('url') ?>/wp-login.php?action=register"> <strong>Registrarse</strong></a>
<?php }?>
</li>
pero el problema es:
redirige a la página de inicio de sesión y no a la página actual...
Quiero que vaya a la página de inicio después de cerrar sesión. Por favor ayúdenme...

Si solo deseas modificar el cierre de sesión y no el inicio, entonces usa wp_logout_url(). Por el contrario, puedes usar wp_login_url() solo para la URL de inicio de sesión.
Ejemplo de un enlace de cierre de sesión:
<a href="<?php echo wp_logout_url( home_url() ); ?>" title="Cerrar sesión">Cerrar sesión</a>
Todavía puedes usar la función wp_loginout() pero la redirección funcionará tanto en el inicio como en el cierre de sesión. Pero si eso está bien, podría verse así:
<?php wp_loginout( home_url() ); ?>

Desde WordPress 4.2.0
se introdujo un filtro para el hook de logout llamado logout_redirect
.
apply_filters( 'logout_redirect', string $redirect_to, string $requested_redirect_to, WP_User $user )
Filtra la URL de redirección al cerrar sesión.
Parámetro | Descripción |
---|---|
$redirect_to |
(string ) La URL de destino de redirección. |
$requested_redirect_to |
(string ) La URL de destino de redirección solicitada pasada como parámetro. |
$user |
(WP_User ) El objeto WP_User del usuario que cierra sesión. |
Ejemplo de uso básico
<?php
add_filter( 'logout_redirect', function() {
return esc_url( home_url() );
} ); ?>
Se utilizan funciones anónimas, se requiere PHP >
5.3
Más información
- Lo mismo aplica para inicios de sesión, con un
login_redirect
introducido en3.0.0
.

Prueba esto
add_action('check_admin_referer', 'pfwp_logout_without_confirm', 10, 2);
function pfwp_logout_without_confirm($action, $result)
{
/**
* Permite cerrar sesión sin confirmación
*/
if ($action == "log-out" && !isset($_GET['_wpnonce'])) {
$redirect_to = isset($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : get_permalink( wp_logout_url() )// o URL personalizada;
$location = str_replace('&', '&', wp_logout_url($redirect_to));
header("Location: $location");
die;
}
}
