Reindirizzamento alla home page dopo il logout
Sto utilizzando un menu personalizzato per login/logout, ecco il mio codice:
<li>
<?php
if (is_user_logged_in()) {
$user = wp_get_current_user();
echo 'Benvenuto <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"">Logout</a>';
} else { ?>
<strong><?php wp_loginout(); ?></strong>
oppure <a href="<?php bloginfo('url') ?>/wp-login.php?action=register"> <strong>Registrati</strong></a>
<?php }?>
</li>
ma il problema è:
viene reindirizzato alla pagina di login invece che alla pagina corrente...
Vorrei che dopo il logout venisse reindirizzato alla home page. Per favore aiutatemi...

Se vuoi modificare solo il logout e non il login, allora usa wp_logout_url(). Al contrario, puoi usare wp_login_url() solo per l'URL di login.
Esempio di un link per il logout:
<a href="<?php echo wp_logout_url( home_url() ); ?>" title="Esci">Esci</a>
Puoi ancora usare la funzione wp_loginout() ma il reindirizzamento funzionerà sia per il login che per il logout. Se va bene, potrebbe essere così:
<?php wp_loginout( home_url() ); ?>

Da WordPress 4.2.0
è stato introdotto un filtro per l'hook di logout chiamato logout_redirect
.
apply_filters( 'logout_redirect', string $redirect_to, string $requested_redirect_to, WP_User $user )
Filtra l'URL di reindirizzamento dopo il logout.
Parametro | Descrizione |
---|---|
$redirect_to |
(string ) L'URL di destinazione per il reindirizzamento. |
$requested_redirect_to |
(string ) L'URL di reindirizzamento richiesto passato come parametro. |
$user |
(WP_User ) L'oggetto WP_User per l'utente che sta effettuando il logout. |
Scenario d'uso semplice
<?php
add_filter( 'logout_redirect', function() {
return esc_url( home_url() );
} ); ?>
Funzioni anonime utilizzate, richiede PHP >
5.3
Approfondimenti
- Lo stesso vale per i login, con un filtro
login_redirect
introdotto in3.0.0
.

Prova questo
add_action('check_admin_referer', 'pfwp_logout_without_confirm', 10, 2);
function pfwp_logout_without_confirm($action, $result)
{
/**
* Permette il logout senza conferma
*/
if ($action == "log-out" && !isset($_GET['_wpnonce'])) {
$redirect_to = isset($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : get_permalink( wp_logout_url() )// oppure un URL personalizzato;
$location = str_replace('&', '&', wp_logout_url($redirect_to));
header("Location: $location");
die;
}
}
