web-dev-qa-db-fra.com

Supprimer un utilisateur sur plusieurs sites

J'essaie de supprimer un utilisateur lorsqu'une passerelle de paiement demande, j'ai le code suivant:

(Le code édité pour afficher la fonction complète qui communique avec la passerelle de paiement, les échos donnent la réponse à la passerelle de paiement dont la sortie est issue car il est utilisé dans le code exemple de passerelle de paiement.)

function handle_gateway_return() {
    $GWPass = get_option( $this->gateway . "_gateway_gwpass" );

    if ($_GET["GWPass"] != $GWPass ) {
        header("HTTP/1.0 401 Unauthorized");
        echo "<h1>Gateway 1.1</h1><h3>Authentication failed.</h3>";
        exit;
    }

    //==================================================
    // Action: user.add
    //==================================================

    if ($_GET["Action"] == "user.add") {
        // Load variables
        $ZFirstName     = trim($_GET['FIRSTNAME']);
        $ZLastName      = trim($_GET['LASTNAME']);
        $ZFullName      = $ZFirstName." ".$ZLastName;
        $ZUserName      = trim($_GET['username']);
        $ZEmail         = trim($_GET['EMAIL']);
        $ZPassword      = trim($_GET['password']); 
        $ZPassword      = md5($ZPassword); //md5

    if ( username_exists( $ZUserName ) ) {
        echo "OK|User Added!";
        exit;   
        }

    if ( !username_exists( $ZUserName ) ) {
        wp_create_user( $ZUserName, $ZPassword, $ZEmail );
        echo "OK|User Added!";
        exit;
        }

    }

    //==================================================
    // Action: user.delete
    //==================================================

    else if ($_GET["Action"] == "user.delete") {
        $ZUserName = trim($_GET['username']);

    // Grab user_id
    $user = get_user_by('login', $ZUserName);

    if (!$user) {
        echo 'USER_DOES_NOT_EXIST';
        exit;
        }

    $url = network_site_url('/wp-admin/includes/ms.php');
    if ($user) {
        include($url);
        wpmu_delete_user($user->ID);
        echo "OK|User Deleted!";
        exit;
        }

    } else { 
        echo "UNKNOWN_ACTION|UNKNOWN_ACTION";
        exit;
    }   

}

Cependant, l'utilisateur ne sera pas supprimé! Qu'est-ce que je fais mal?

Merci d'avance pour votre aide!

Edit: Cela se passe dans un fichier addon de passerelle de paiement utilisé dans le plugin d’appartenance à wpmudevs. Dans le fichier addon, j'ai une fonction qui traite le retour de la passerelle et la création de l'utilisateur fonctionne très bien avec wp_create_user et, oui, il n'y avait pas besoin d'inclure. J'ai ajouté l'inclusion ici simplement parce que je l'avais vu mentionnée quelque part et pensais que j'allais l'essayer car sans l'inclusion ne fonctionnait pas non plus (mais je ne pensais pas que c'était nécessaire).

2
phoenixlaef

J'ai fini par comprendre cela il y a un moment ... j'ai complètement oublié de le poster ici.

Une fois que j'ai ajouté correctement l'inclusion, cela a fonctionné:

require_once('./wp-admin/includes/ms.php');
   if ( $user ) {
    wpmu_delete_user( $user->ID );
    }

Pour le plaisir des futurs lecteurs, voici le code final:

function handle_gateway_return() {

    $GWPass = get_option( $this->gateway . "_gateway_gwpass" );

    if ($_GET["GWPass"] != $GWPass) {     

    header("HTTP/1.0 401 Unauthorized");

    echo "<h1>Gateway 1.1</h1><h3>Authentication failed.</h3>";

    exit;  

    }


    if ($_GET["Action"] == "user.add") {    

    // Load variables.

    $ZFirstName        = trim($_GET['FIRSTNAME']);

    $ZLastName      = trim($_GET['LASTNAME']);

    $ZFullName      = $ZFirstName." ".$ZLastName;

    $ZUserName      = trim($_GET['username']);

    $ZEmail         = trim($_GET['EMAIL']);

    $ZPassword      = trim($_GET['password']); 

    $ZPassword      = md5($ZPassword); //md5

    if ( !username_exists( $ZUserName ) ) {
        wp_create_user( $ZUserName, $ZPassword, $ZEmail );
    }   

    // Tell server that user was added

    echo "OK|User added!";
     exit;
      } 

    else if ($_GET["Action"] == "user.delete") { 

        $ZUserName = trim($_GET['username']);

        $user = get_user_by( 'login', $ZUserName );

        require_once('./wp-admin/includes/ms.php');
    if ( $user ) {
    wpmu_delete_user( $user->ID );
    } else {
        echo "User Not Deleted!";
        exit;
    }

            // Tell server user deleted
    echo "OK|User deleted!";
    exit;
    }

    else { 

    echo "UNKNOW_ACTION|UNKNOW_ACTION";
    exit;
    }
  }
3
phoenixlaef