La función wp_delete_user para eliminar al usuario de la interfaz no funciona

2 minutos de lectura

Estoy trabajando en un sitio de wordpress. Cuando un usuario inicia sesión en el sitio, se le redirige a la página de términos y condiciones. Entonces, si acepta los términos y condiciones, se le permitirá usar los servicios y si no acepta los términos y condiciones, su cuenta será cancelada. Ahora usé la función wp_delete_user para cancelar su cuenta, pero no funciona. Aquí está mi código

add_action('init', 'function_init_terms');

function function_init_terms()
{
    if(isset($_POST['terms_submit']))
    {
        if($_POST['terms_agree'] == 'yes')
        {
            wp_redirect( get_permalink(215)); exit;
        }
        if($_POST['terms_agree'] != 'yes')
        {

            $user_ID = get_current_user_id();

             wp_delete_user($user_ID);
                echo html_entity_decode( wp_logout_url(home_url()) );




        }
    }
}

La primera parte del código funciona bien, es decir, si está de acuerdo con los términos y condiciones, se le redirige a la página id 215 con éxito. Pero la otra parte no funciona. Aquí está mi html

<form method="POST" action="<?php bloginfo('url') ?>/">
 <input type="checkbox" name="terms_agree" id="terms_agree" value="yes"/>Agree<br>
 <input type="submit" name="terms_submit" id="terms_submit" value="Continue" />
 </form>

  • ¿Qué quieres decir con ‘la otra parte no funciona’? Tienes algún error?

    – andreivictor

    29 de marzo de 2014 a las 18:28

  • porque cuando el usuario no acepta los términos y condiciones, su cuenta debe cancelarse pero se redirige a la página de inicio y el usuario aún está conectado y su cuenta no se elimina.

    – Riz

    29/03/2014 a las 18:31

  • haberlo hecho utilizó la variable global $wpdb. gracias por tu tiempo

    – Riz

    29 de marzo de 2014 a las 18:44

  • Se puede hacer con wp_delete_user. Debes incluir el ./wp-admin/includes/user.php archivo ante el wp_delete_user() llamada de función, de lo contrario lanzará un call to undefined function error. Ejemplo aquí: codex.wordpress.org/Function_Reference/wp_delete_user#Examples

    – andreivictor

    29 de marzo de 2014 a las 18:46

avatar de usuario de ejazz
Eyazz

Para que esta publicación sea más legible para los usuarios de Google, la respuesta de Adreivictor:

Para utilizar la función de back-end wp_delete_user()necesitas require_once(ABSPATH.'wp-admin/includes/user.php' );

Ejemplo de WordPress:

if(is_user_logged_in() && !empty($_GET['DeleteMyAccount'])) {
    add_action('init', 'remove_logged_in_user');
}

function remove_logged_in_user() {
    require_once(ABSPATH.'wp-admin/includes/user.php' );
    $current_user = wp_get_current_user();
    wp_delete_user( $current_user->ID );
}

https://codex.wordpress.org/Function_Reference/wp_delete_user#Examples

¿Ha sido útil esta solución?