# Como corrigir Uncaught Error: Class not found

O erro Class not found é um erro fatal de PHP que aparece quando o código instancia uma classe que não foi carregada na execução. No WordPress, surge quando um plugin atualizado pela metade, um autoload do Composer ausente ou um arquivo de classe apagado impedem o PHP de encontrar a definição.

## O que é o erro Class not found?

No PHP orientado a objetos, uma classe precisa estar carregada antes de ser usada com new. O WordPress e seus plugins carregam classes por inclusão direta de arquivos ou por um autoloader, muitas vezes o do Composer. Quando o arquivo que define a classe não é incluído, foi apagado ou o autoload não foi registrado, o PHP chega no new, não acha a definição e aborta com "Uncaught Error: Class ... not found". O erro cita a classe e o arquivo onde ela foi chamada, e o site para por ser fatal.

## Como identificar

- Mensagem "Fatal error: Uncaught Error: Class 'NomeDaClasse' not found in /caminho/arquivo.php:N".
- O erro aponta a linha exata onde o código tentou usar a classe com new ou de forma estática.
- Surge logo após atualizar, mover ou reinstalar um plugin, ou após um upload incompleto via FTP.
- O wp-admin ou o site travam na chamada da classe, sem carregar o restante da página.

**Antes de começar:** Faça backup antes de mexer em arquivos de plugin via FTP. Ao reinstalar, apague a pasta antiga por completo antes de subir a nova: misturar arquivos de versões diferentes é uma causa frequente de classes faltando e do próprio Class not found.

## Como prevenir

- Ao atualizar plugins, apague a pasta antiga por completo antes de subir a nova versão via FTP
- Mantenha a pasta vendor do Composer intacta em plugins que dependem do autoload dele
- Carregue cada classe com require_once ou um autoloader antes de qualquer new no código

Erros relacionados

- [Como corrigir Call to undefined function](https://full.services/wp-fixer/corrigir-call-to-undefined-function-wordpress/)
- [Como corrigir Cannot redeclare function](https://full.services/wp-fixer/corrigir-cannot-redeclare-function-wordpress/)
- [Como corrigir Parse error / syntax error no PHP](https://full.services/wp-fixer/corrigir-parse-error-syntax-php-wordpress/)

## Causa

- Plugin atualizado pela metade, em que o arquivo que define a classe não foi enviado por completo.
- Pasta vendor do Composer ausente, deixando o autoloader sem registrar as classes do plugin.
- Arquivo da classe apagado ou renomeado, quebrando o include que o carregava.
- Ordem de carregamento errada: a classe é usada antes do arquivo que a define ser incluído.
- Namespace ou caminho incorreto no autoloader, fazendo o PHP procurar a classe no lugar errado.

## Como resolver

1. Leia a classe e o arquivo do erro: a mensagem diz o nome da classe que faltou e o arquivo e a linha onde ela foi chamada. Isso aponta qual plugin ou tema é o responsável.
2. Reinstale o plugin ou tema culpado: se o erro veio após uma atualização, o upload provavelmente ficou incompleto. Via FTP, apague a pasta do plugin em wp-content/plugins e suba a versão completa de novo, com todos os arquivos.
3. Restaure a pasta vendor do Composer: se o plugin usa Composer e a pasta vendor sumiu, o autoload some junto. Restaure a vendor do pacote original ou rode composer install se tiver acesso ao terminal.
4. Confirme que a classe é incluída antes do uso: no código próprio, garanta que o arquivo da classe é carregado antes do new. Use require_once apontando para o caminho correto do arquivo da classe.
5. Desative o plugin se nada resolver: para devolver o site ao ar, renomeie a pasta do plugin via FTP. Isso o desativa e remove a chamada à classe ausente, até você reinstalar a versão íntegra.

## Código

```php
// ERRO: instanciar uma classe sem o arquivo dela carregado
$obj = new Minha_Classe();  // <- Class 'Minha_Classe' not found

// CORRETO: incluir o arquivo da classe antes de usar
require_once plugin_dir_path( __FILE__ ) . 'includes/class-minha-classe.php';
$obj = new Minha_Classe();

// Alternativa: registrar um autoloader simples para o plugin
spl_autoload_register( function ( $classe ) {
    $arquivo = plugin_dir_path( __FILE__ ) . 'includes/' . strtolower( str_replace( '_', '-', $classe ) ) . '.php';
    if ( file_exists( $arquivo ) ) {
        require_once $arquivo;
    }
} );
```

## Perguntas frequentes

### O que significa Uncaught Error Class not found no WordPress?

Significa que o PHP tentou usar uma classe que não foi carregada na execução. O arquivo que define a classe não foi incluído, foi apagado ou o autoloader não a registrou. Como é erro fatal, o site para na linha que chamou a classe.

### Por que o erro apareceu depois de atualizar um plugin?

Atualizações por FTP ou interrompidas no meio podem deixar arquivos faltando, inclusive o que define a classe. O plugin chama a classe, mas o arquivo não está lá. Reinstalar o plugin completo, apagando a pasta antiga antes, costuma resolver.

### O que é a pasta vendor e por que ela importa aqui?

A pasta vendor é gerada pelo Composer e contém o autoloader que registra as classes do plugin. Se ela some, o autoload some junto e o PHP não encontra as classes. Restaurar a vendor original ou rodar composer install recupera o carregamento.

### Posso corrigir Class not found sem editar código?

Em muitos casos sim. Se o culpado é um plugin com arquivos faltando, basta reinstalá-lo completo via FTP. Se precisar apenas devolver o site ao ar, renomear a pasta do plugin o desativa e remove a chamada à classe ausente.

### O que é um autoloader no PHP?

É um mecanismo que carrega o arquivo de uma classe automaticamente quando ela é usada, em vez de você incluir cada arquivo na mão. O spl_autoload_register registra essa função. Plugins modernos usam o autoloader do Composer para isso.

### O erro travou meu painel. Como recupero o acesso?

Acesse o site via FTP e renomeie a pasta do plugin que aparece no caminho do erro, dentro de wp-content/plugins. Isso o desativa e libera o wp-admin. Depois reinstale a versão íntegra do plugin para usá-lo de novo.

**Fonte:** [PHP Manual — Autoloading Classes](https://www.php.net/manual/en/language.oop5.autoload.php)
