web-dev-qa-db-ja.com

マルチサイトでユーザーを削除する

支払いゲートウェイが要求したときにユーザーを削除しようとしています。次のコードがあります。

(支払いゲートウェイと通信する完全な機能を表示するためのコードを編集し、エコーは支払いゲートウェイへの応答を返します。支払いゲートウェイのサンプルコードで使用されているためです。)

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

}

しかし、ユーザーは削除されません!何がおかしいのですか?

ご協力ありがとうございます。

編集:これはwpmudevsメンバーシッププラグインで使用されるペイメントゲートウェイアドオンファイル内で起こっています。アドオンファイルには、ゲートウェイの戻りを処理する関数があり、ユーザーの作成はwp_create_userを使用して正常に機能し、はい、そこにインクルードする必要はありませんでした。ここでインクルードを追加したのは、どこかで言及されているのを見たからです。インクルードしないとうまくいかないと思います(しかし、必要ではないと思いました)。

2
phoenixlaef

私はしばらく前にこれを考え出しました…完全にここに投稿するのを忘れました。

インクルードを正しく追加したら、それはうまくいきました:

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

将来の読者のために、これが最後のコードです。

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