Deconectare folosind un link (fără nonce)
Această întrebare vine de la un non-programator absolut - și a fost pusă în diverse forme de mai multe ori (de exemplu aici).
Pentru a te deconecta corect, URL-ul care declanșează acțiunea are nevoie de un nonce, ca de exemplu:
http://xyz/wp-login.php?action=logout&redirect_to=http%3A%2F%2Fwww.spiegel.de&_wpnonce=d9d1a28ef2
Putem obține nonce-ul așa cum este descris în codex. DAR: ce fac dacă trebuie să declanșez o deconectare folosind un URL. Mai precis: plugin-ul meu CiviCRM are formulare pe care oamenii le pot completa și după finalizare pot redirecționa utilizatorul altundeva -> de exemplu să se deconecteze și să meargă pe altă pagină. Pot copia/insera URL-ul de redirecționare într-un formular ca:
http://xyz/wp-login.php?action=logout&redirect_to=http%3A%2F%2Fwww.spiegel.de
-> cum obțin nonce-ul unde ar trebui să fie - sau există alternative???
Salutări!

Aceasta va dezactiva verificarea nonce pentru delogare - răspunderea este pe cont propriu:
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 = '';
}
/**
* Filtrează URL-ul de redirecționare pentru delogare.
*
* @since 4.2.0
*
* @param string $redirect_to URL-ul destinației de redirecționare.
* @param string $requested_redirect_to URL-ul solicitat pentru redirecționare transmis ca parametru.
* @param WP_User $user Obiectul WP_User pentru utilizatorul care se deloghează.
*/
$redirect_to = apply_filters( 'logout_redirect', $redirect_to, $requested_redirect_to, $user );
wp_safe_redirect( $redirect_to );
exit;
});
