Logout com url oculta para Menu. É possível usando CLASSES?

  • Autor Autor Gabrieluno
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
Gabrieluno

Gabrieluno

Beta
Usuário com poucas negociações! Use sempre o saldo do ForoBeta!
Necesito ayuda para crear una Función de desconexión para el menú superior, debe ocultar la Url que seria «wp-login.php» y direccionar a la home.

Supongo se podría hacer utilizando una clase que cargue una función de wp_logout, así por medio de la clase lo podría agregar al menú de WordPress, y desconectaría al usuario cuando haga click en el botón de Logout.

El problema es que llevo días buscando por internet y no hay ninguna función como para desconectar a un usuario ocultando la url por medio de una clase, además soy novato y no lo logre con códigos incompletos. Si alguien es capaz de crear una función que solucione este problema le estaré agradecido de todo corazón, con tal hazaña tu nombre será recordado a lo largo del tiempo ♥

Funciones probablemente útiles:
Pastebin aquí
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Hola Gabriel:

Te sugiero que publiques tu pregunta en algún foro específico de WordPress ya que tu problema parece muy específico de esa plataforma.

Suerte!
 
Necesito ayuda para crear una Función de desconexión para el menú superior, debe ocultar la Url que seria «wp-login.php» y direccionar a la home.

Supongo se podría hacer utilizando una clase que cargue una función de wp_logout, así por medio de la clase lo podría agregar al menú de WordPress, y desconectaría al usuario cuando haga click en el botón de Logout.

El problema es que llevo días buscando por internet y no hay ninguna función como para desconectar a un usuario ocultando la url por medio de una clase, además soy novato y no lo logre con códigos incompletos. Si alguien es capaz de crear una función que solucione este problema le estaré agradecido de todo corazón, con tal hazaña tu nombre será recordado a lo largo del tiempo ♥

Funciones probablemente útiles:
Pastebin aquí
Muy bien no se que tienes que hacer, Imagino que tendrias que utilizar una función javascript que haga una llamada a ajax. En esa llamada entra a un archivo php que llama a wp-login.php y cierra las sesiones activas del usuario y vuelve a la principal y redirecciona al home.
 
Lo primero que necesitas es poder agregar fragmentos de código, te sugiero utilizar un plugin llamado: "Snippets". Luego, como punto de partida puedes utilizar esto:

PHP:
PHP:
/** Configurar Ajax Logout */
if (is_admin()) {
    // En la sección de administrador, configuramos la acción de Ajax Logout
    add_action('wp_ajax_custom_ajax_logout', 'custom_ajax_logout_func');
} else {
    wp_enqueue_script('custom-ajax-logout', get_stylesheet_directory_uri() . '/js/customAjaxLogout.js', array('jquery'), '1.0', true );
    wp_localize_script('custom-ajax-logout', 'ajax_object',
        array(
            'ajax_url' => admin_url('admin-ajax.php'),
            'home_url' => get_home_url(),
            'logout_nonce' => wp_create_nonce('ajax-logout-nonce'),
        )
    );
}
function custom_ajax_logout_func(){
    check_ajax_referer( 'ajax-logout-nonce', 'ajaxsecurity' );
    wp_clear_auth_cookie();
    wp_logout();
    ob_clean(); // Puede estar de más, pero es una buena práctica
    echo 'adios!!';
    wp_die();
}

Javascript:
JavaScript:
jQuery(document).ready( function($){
  $(document).on('click','.logout', function(e) {
    e.preventDefault();
    jQuery.ajax({
        type: 'POST',
        url: ajax_object.ajax_url,
        data: {
            'action': 'custom_ajax_logout', //Llama a wp_ajax_nopriv_ajaxlogout
            'ajaxsecurity': ajax_object.logout_nonce
        },
        success: function(r){
            // Cuando viene la respuesta
            window.location = ajax_object.home_url;
        }
    });
  });
});

Hay varios scripts ya creados en Stackoverflow que puedes consultar, solo busca "Ajax Logout" e intenta implementar alguno.
 
Gracias a todos y en especial a @Jhertz, su código me sirvió! En el propio foro de wp no me dieron la solución, en forobeta si, que linda comunidad. GRACIAS
 
Gracias a todos y en especial a @Jhertz, su código me sirvió! En el propio foro de wp no me dieron la solución, en forobeta si, que linda comunidad. GRACIAS
¡Me alegra que te haya servido!

Siempre es un placer ayudar.
 
Voltar
Topo