Cómo cerrar sesión usando un enlace (sin nonce)
Esta pregunta viene de alguien que no es programador - y se ha formulado de varias formas anteriormente (ej. aquí).
Para cerrar sesión correctamente, la URL que lo activa necesita un nonce como por ejemplo:
http://xyz/wp-login.php?action=logout&redirect_to=http%3A%2F%2Fwww.spiegel.de&_wpnonce=d9d1a28ef2
Podemos obtener el nonce como se describe en el codex. PERO: ¿qué pasa si necesito activar un logout mediante una URL? Más concretamente: mi plugin de CiviCRM tiene formularios que la gente puede completar y una vez terminados redirigen al usuario a otro sitio -> por ejemplo, cerrar sesión e ir a otra página. Puedo copiar/pegar la URL de redirección en un formulario como:
http://xyz/wp-login.php?action=logout&redirect_to=http%3A%2F%2Fwww.spiegel.de
-> ¿cómo obtengo el nonce donde se supone que debe ir o existen alternativas???
¡Saludos!

Esto desactivará la verificación del nonce para cerrar sesión - bajo tu propia responsabilidad:
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 la URL de redirección al cerrar sesión.
*
* @since 4.2.0
*
* @param string $redirect_to La URL de destino de redirección.
* @param string $requested_redirect_to La URL de redirección solicitada pasada como parámetro.
* @param WP_User $user El objeto WP_User del usuario que está cerrando sesión.
*/
$redirect_to = apply_filters( 'logout_redirect', $redirect_to, $requested_redirect_to, $user );
wp_safe_redirect( $redirect_to );
exit;
});
