Come effettuare il logout tramite link (senza nonce)
Questa domanda viene da un assoluto non-programmatore - ed è stata posta in varie forme più volte (ad esempio qui).
Per effettuare correttamente il logout, l'URL che lo attiva ha bisogno di un nonce come ad esempio:
http://xyz/wp-login.php?action=logout&redirect_to=http%3A%2F%2Fwww.spiegel.de&_wpnonce=d9d1a28ef2
Possiamo ottenere il nonce come descritto nel codex. MA: cosa succede se devo attivare un logout utilizzando un URL. Più precisamente: il mio plugin CiviCRM ha moduli che le persone possono compilare e una volta completati reindirizzano l'utente da qualche parte -> ad esempio effettuare il logout e andare su un'altra pagina. Posso copiare/incollare l'URL di reindirizzamento in un modulo come
http://xyz/wp-login.php?action=logout&redirect_to=http%3A%2F%2Fwww.spiegel.de
-> come posso ottenere il nonce dove dovrebbe andare - oppure esistono alternative???
Saluti!

Questo disabiliterà il controllo del nonce per il logout - la responsabilità è tua:
add_action( 'login_form_logout', function () {
$user = wp_get_current_user();
wp_logout();
if ( ! empty( $_REQUEST['redirect_to'] ) ) {
$redirect_to = $requested_redirect_to = $_REQUEST['redirect_to'];
} else {
$redirect_to = 'wp-login.php?loggedout=true';
$requested_redirect_to = '';
}
/**
* Filtra l'URL di reindirizzamento dopo il logout.
*
* @since 4.2.0
*
* @param string $redirect_to L'URL di destinazione per il reindirizzamento.
* @param string $requested_redirect_to L'URL di reindirizzamento richiesto passato come parametro.
* @param WP_User $user L'oggetto WP_User per l'utente che sta effettuando il logout.
*/
$redirect_to = apply_filters( 'logout_redirect', $redirect_to, $requested_redirect_to, $user );
wp_safe_redirect( $redirect_to );
exit;
});
