0

「gotooutput」を使用するWordPress用のプラグインを使用しています。これは、PHP5.3を使用している私の友人に問題を引き起こします。彼らはまた、MiniPressと呼ばれる私が見つけたプラグインを使用したいと思っています。

PHP 5.3で動作するように、このプラグインをどのように書き直すことができますか?

private static function get_filesystem() {
    if ( false === self::$fs ) {
        global $wp_filesystem;

        require_once( ABSPATH . 'wp-admin/includes/file.php' );

        $write_method = get_filesystem_method( array(), false );
        if ( $write_method != 'direct' && $write_method != 'ftpsockets' ) {
            self::$fs = false;
            goto output;
        }

        if ( false === ( $creds = @request_filesystem_credentials( '' ) ) ) {
            self::$fs = false;
            goto output;
        }

        if ( ! WP_Filesystem( $creds ) ) {
            self::$fs = false;
            goto output;
        }

        self::$fs = $wp_filesystem;
    }

    output:
    return self::$fs;
}

ps:私はプラグインの作者ではありません

4

4 に答える 4

2

交換するだけです:

goto output;

と:

return self::$fs;

最後に削除output:します。

その後、メソッドを次のように書き直すことができます。

private static function get_filesystem() {
    if ( false === self::$fs ) {
        global $wp_filesystem;
        require_once( ABSPATH . 'wp-admin/includes/file.php' );
        $write_method = get_filesystem_method( array(), false );
        if (
            ($write_method != 'direct' && $write_method != 'ftpsockets') || 
            (false === ($creds = @request_filesystem_credentials(''))) ||
            (!WP_Filesystem($creds))
        ) self::$fs = false;
        else self::$fs = $wp_filesystem;
    }
    return self::$fs;
}
于 2013-03-09T13:46:37.413 に答える
0

冗長なコードをすべて削除すると、次のようになります。

private static function get_filesystem() {
    if ( false === self::$fs ) {
        global $wp_filesystem;
        require_once( ABSPATH . 'wp-admin/includes/file.php' );
        $write_method = get_filesystem_method( array(), false );
        if (($write_method == 'direct' || $write_method == 'ftpsockets') && 
            (false !== ($creds = @request_filesystem_credentials(''))) &&
            (WP_Filesystem($creds)) {
          self::$fs = $wp_filesystem;
        }
    }
    return self::$fs;
}
于 2013-03-09T14:16:13.590 に答える
0

これはうまくいくはずです

private static function get_filesystem() {
    if ( false === self::$fs ) {
        global $wp_filesystem;

        require_once( ABSPATH . 'wp-admin/includes/file.php' );

        $write_method = get_filesystem_method( array(), false );
        if ( $write_method != 'direct' && $write_method != 'ftpsockets' ) {
            self::$fs = false;
        }

        else if ( false === ( $creds = @request_filesystem_credentials( '' ) ) ) {
            self::$fs = false;
        }

        else if ( ! WP_Filesystem( $creds ) ) {
            self::$fs = false;
        } else self::$fs = $wp_filesystem;
    }

    return self::$fs;
}
于 2013-03-09T13:59:31.277 に答える
0

別の方法:

private static function get_filesystem() {
    if ( false === self::$fs ) {
        global $wp_filesystem;

        require_once( ABSPATH . 'wp-admin/includes/file.php' );

        $write_method = get_filesystem_method( array(), false );

        if ( 
            $write_method != 'direct' && $write_method != 'ftpsockets' 
            ||
            false === ( $creds = @request_filesystem_credentials( '' ) )
            ||
            ! WP_Filesystem( $creds )
        ) {
            self::$fs = false;
        } else {
            self::$fs = $wp_filesystem;
        }
    } 
    return self::$fs;
}
于 2013-03-09T14:03:22.143 に答える