Fatal error: Uncaught ReflectionException: Method get_site_editor_type does not exist

回答 4 浏览 2.6万 2022-08-08

在网站上什么都不做之后,在几天不使用的情况下,当试图登录时,出现了这样的错误。

Fatal error: Uncaught ReflectionException: Method get_site_editor_type does not exist in /usr/home/midas/domains/mydomain.com/public_html/wp-content/plugins/elementor-pro/modules/theme-builder/documents/theme-document.php:45

主题文档.php:

protected static function get_site_editor_type_bc() {
    static $types = [];

    $class_name = static::get_class_full_name();

    $reflection = new \ReflectionClass( $class_name ); //45 line
    $method = $reflection->getMethod( 'get_site_editor_type' );

    // It's own method, use it.
    if ( $class_name === $method->class ) {
        return static::get_site_editor_type();
    }

    // _deprecated_function( 'get_name', '3.0.0', 'get_site_editor_type' );

    // Fallback, get from class instance name (with caching).
    if ( isset( $types[ $class_name ] ) ) {
        return $types[ $class_name ];
    }

    $instance = new static();

    $types[ $class_name ] = $instance->get_name();

    return $types[ $class_name ];
}

我如何解决这个问题呢?

Wojciech 提问于2022-08-08
4 个回答
#1楼 已采纳
得票数 74

修改代码

$reflection = new \ReflectionClass( $class_name ); //45 line
$method = $reflection->getMethod( 'get_site_editor_type' );

// It's own method, use it.
if ( $class_name === $method->class ) {
    return static::get_site_editor_type();
}

通过以下方式

if (method_exists($class_name, "get_site_editor_type")) {
    $reflection = new \ReflectionClass( $class_name );
    $method = $reflection->getMethod( 'get_site_editor_type' );
    
    // It's own method, use it.
    if ( $class_name === $method->class ) {
        return static::get_site_editor_type();
    }
}
Mayous 提问于2022-08-08
凡是逐行检查代码的人,OP都只添加了if条件。Ahmed Ali 2022-09-08
#2楼
得票数 19

我解决这个问题的方法与Mayous类似。我简单地注释了/wp-content/plugins/elementor-pro/modules/theme-builder/documents/theme-document.php中的一行。 因此,第46行是

$method = $reflection->getMethod( 'get_site_editor_type' );

改成了

//$method = $reflection->getMethod( 'get_site_editor_type' );
Cecily Urizar-Faught 提问于2022-08-08
Ruben Helsloot 修改于2022-08-27
没有工作。在它下面有一行使用了$reflection,所以现在抛出了一个错误。RedDragonWebDesign 2022-10-13
对我来说是有效的。我发现Elementor不断推出有问题的版本,这让我非常不安。Johan 2022-10-18
有趣的是。也许有两个错误的版本,而这修复了其中一个错误的版本。RedDragonWebDesign 2022-10-19
#3楼
得票数 8

请进入。/wp-content/plugins/elementor-pro/modules/theme-builder/documents/theme-document.php

删去第47行注释

$method = $reflection->getMethod( 'get_site_editor_type' );

等待修复后的更新。

halkibsi 提问于2022-08-08
没有工作。在它下面有一行使用了$reflection,所以现在抛出了一个错误。RedDragonWebDesign 2022-10-13
#4楼
得票数 5

我今天也遇到了这个问题,通过回滚免费版的Elementor解决了这个问题,这是由于最近的更新中的一个bug。

Byron Jacobs 提问于2022-08-08