Como sair sem confirmar 'Você realmente deseja sair? ”?

8

Agora, quando faço logout via:

<a href="<?php bloginfo('url'); ?>/wp-login.php?action=logout">Log out</a>

ele me redireciona para a página onde eu preciso confirmar o logout.

Como eliminar a confirmação e o redirecionamento para a página inicial após o logout?

    
por Derfder 06.10.2012 / 10:46

2 respostas

21

Isso acontece porque você está perdendo o nonce necessário na URL, que está sendo verificada em wp-login.php

case 'logout' :
    check_admin_referer('log-out');
    ...

Use wp_logout_url para recuperar o URL, incluindo o nonce. Se você quiser redirecionar para um URL personalizado, basta passá-lo como um argumento.

<a href="<?php echo wp_logout_url('/redirect/url/goes/here') ?>">Log out</a>

Você também pode usar wp_loginout , que gera o link para você, incluindo tradução:

echo wp_loginout('/redirect/url/goes/here')
    
por ndm 06.10.2012 / 12:24
9

Se você não pode usar a função wp_logout_url() , você pode desativar essa validação usando este código:

add_action('check_admin_referer', 'logout_without_confirm', 10, 2);
function logout_without_confirm($action, $result)
{
    /**
     * Allow logout without confirmation
     */
    if ($action == "log-out" && !isset($_GET['_wpnonce'])) {
        $redirect_to = isset($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : 'url-you-want-to-redirect';
        $location = str_replace('&amp;', '&', wp_logout_url($redirect_to));
        header("Location: $location");
        die;
    }
}

Substitua 'url-you-want-to-redirect' pelo URL que você deseja redirecionar após o logout.

Adicione no seu functions.php

    
por Дмитрий Шишов 04.04.2016 / 15:48

Tags