Solucionar problemas

Solucionar el error «Uncaught ReflectionException: Method get_site_editor_type does not exist»

Revisado el 4 min de lectura WordPress errores

El error completo suele ser parecido a este:

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

Aparece cuando la versión de Elementor Pro no es compatible con la de Elementor, con la de WordPress o con algún complemento que añade tipos de plantilla al Theme Builder. Elementor Pro busca un método que esa otra pieza no tiene y la web o el editor se rompen.

Solución definitiva: actualizar

Si puedes entrar en el escritorio de WordPress:

  1. Ve a Escritorio > Actualizaciones.
  2. Actualiza Elementor y Elementor Pro a la última versión. Elementor Pro solo se actualiza si la licencia está activa en Elementor > Licencia; si caducó, descarga la última versión desde tu cuenta de my.elementor.com y súbela en Plugins > Añadir nuevo > Subir plugin.
  3. Actualiza también los complementos de Elementor (packs de widgets, addons de Theme Builder) y el tema.

Si el error sigue tras actualizarlo todo, desactiva los complementos de Elementor uno a uno: el que lo haga desaparecer es el incompatible. Busca una versión actualizada o una alternativa.

Si no puedes entrar al panel: parche temporal

Cuando el error tumba también el escritorio de WordPress, este parche te devuelve el acceso para poder actualizar. Se pierde en cuanto actualizas Elementor Pro, que es justo lo que buscamos.

Desde el Administrador de archivos de cPanel o por FTP, abre:

wp-content/plugins/elementor-pro/modules/theme-builder/documents/theme-document.php

Busca get_site_editor_type (está hacia la línea 45). Encontrarás este bloque:

$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();
}

Rodéalo con una comprobación if ( method_exists( ... ) ) { ... } para que quede así:

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

Guarda el fichero y recarga la web: el error desaparece. Entra en el escritorio y haz las actualizaciones del apartado anterior.

Haz una copia del fichero antes de editarlo. Si al guardarlo aparece otro error de sintaxis, revisa que has cerrado la llave } al final del bloque.

Si prefieres no tocar el código

Puedes recuperar el acceso desactivando Elementor Pro: en el Administrador de archivos, renombra la carpeta wp-content/plugins/elementor-pro a elementor-pro-off. La web cargará sin las plantillas de Theme Builder (cabecera, pie, etc.).

Entra al escritorio, actualiza Elementor y sube la última versión de Elementor Pro (el zip de tu cuenta de Elementor) en Plugins > Añadir nuevo > Subir plugin. Actívala, comprueba que la web y el editor funcionan y borra la carpeta elementor-pro-off. No le devuelvas el nombre original a la carpeta antigua: volvería el error.

También te puede ayudar

¿Algo no cuadra o ha cambiado? Cuéntanoslo y lo revisamos.