web-dev-qa-db-ger.com

Löschen eines Benutzers in Multisite

Ich versuche, einen Benutzer zu löschen, wenn ein Zahlungsgateway dies anfordert. Ich habe den folgenden Code:

(Der bearbeitete Code zeigt die vollständige Funktion an, die mit dem Zahlungsgateway kommuniziert. Die Echos geben die Antwort an das Zahlungsgateway, die Exits sind, da sie im Beispielcode des Zahlungsgateways verwendet werden.)

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;
    }   

}

Der Benutzer wird jedoch nicht gelöscht! Was mache ich falsch?

Vielen Dank im Voraus für Ihre Hilfe!

Bearbeiten: Dies geschieht in einer Zahlungsgateway-Addon-Datei, die im Mitgliedschafts-Plugin von wpmudevs verwendet wird. In der Addon-Datei habe ich eine Funktion, die sich mit der Gateway-Rückgabe befasst und das Erstellen des Benutzers funktioniert einwandfrei mit wp_create_user, und ja, dort war kein Include erforderlich. Ich habe das Include hier einfach hinzugefügt, weil ich es irgendwo erwähnt habe und dachte, ich würde es ausprobieren, da es ohne das Include auch nicht funktioniert hat (aber ich dachte nicht, dass es gebraucht wird).

2
phoenixlaef

Ich habe das vor einiger Zeit herausgefunden ... habe völlig vergessen, es hier zu posten.

Nachdem ich das Include richtig hinzugefügt hatte, funktionierte es:

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

Für zukünftige Leser war hier der endgültige Code:

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