🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como corrigir cURL error 28: timeout no WordPress

Time Full Services Time Full Services
Tipo Erro do servidor
Nome do erro cURL error 28: timeout EN: cURL error 28: Operation timed out
Severidade Grave
Descrição O cURL error 28 no WordPress é um timeout: o servidor enviou uma requisição HTTP externa (a uma API, ao próprio site ou a um update) e não recebeu resposta dentro do tempo limite. Aparece muito na Saúde do site e no WP-Cron.

O que é o cURL error 28 (timeout) no WordPress?

O cURL error 28 é o código que a biblioteca cURL retorna quando uma requisição HTTP não recebe resposta dentro do tempo permitido (“Operation timed out” ou “Connection timed out”). No WordPress, ele surge quando o site usa wp_remote_get/wp_remote_post para falar com uma API externa, com o servidor de updates do WordPress.org ou consigo mesmo (loopback), e essa chamada demora demais. O número 28 é específico de timeout, diferente de outros erros cURL como o 7 (não conseguiu conectar) ou o 60 (certificado SSL inválido).

Como identificar

  • A Saúde do site mostra “A requisição de teste de loopback do REST API falhou” ou “cURL error 28: Operation timed out after 10000 milliseconds”.
  • Tarefas agendadas (WP-Cron) não rodam e o painel acusa “cURL error 28: Connection timed out”.
  • Plugins que consultam APIs externas (frete, pagamento, IA) falham com a mensagem cURL error 28.
  • A verificação de atualizações trava e o WordPress avisa que não conseguiu se conectar ao servidor de updates.
Antes de começar: Faça backup do wp-config.php e do functions.php antes de editar. Não eleve o http_request_timeout muito além do necessário: timeouts longos demais prendem processos PHP esperando respostas que podem nunca chegar, consumindo recursos do servidor.

Como prevenir

  • Use um cron real do servidor (crontab chamando o wp-cron.php) em vez do WP-Cron por loopback em sites com tráfego
  • Monitore as APIs externas que seus plugins consomem para detectar lentidão antes que vire timeout
  • Mantenha o DNS do servidor saudável e peça ao host para confirmar que conexões de saída na 443 estão liberadas

Causa

  • Requisição de loopback bloqueada (o servidor não consegue chamar a própria URL por firewall, DNS interno ou autenticação básica).
  • API externa lenta ou fora do ar que não responde dentro do timeout padrão do WordPress (5s a 10s).
  • Timeout do cURL/PHP curto demais para a operação (default_socket_timeout baixo).
  • Firewall do servidor ou regra de segurança da hospedagem bloqueando conexões de saída (porta 443/80).
  • DNS lento ou mal configurado no servidor, atrasando a resolução do domínio de destino além do limite.

Como resolver

  1. Identifique qual chamada está estourando o tempo: vá em Ferramentas > Saúde do site > Informações e veja se o erro cita loopback (o site chamando a si mesmo) ou um domínio externo. Isso separa problema de servidor de API de terceiro fora do ar.
  2. Teste o loopback manualmente: acesse pela URL do seu site /wp-cron.php no navegador. Se demorar muito ou der erro, o servidor não está conseguindo se chamar e o cron real está parado por isso.
  3. Aumente o timeout das requisições do WordPress: via FTP, adicione ao functions.php do tema (ou a um plugin de snippets) um filtro que eleva o tempo limite das chamadas HTTP de 5 para 30 segundos:
    add_filter( 'http_request_timeout', function() { return 30; } );
  4. Desative WP-Cron e use um cron real do servidor: se o erro for no cron por loopback, desligue o cron interno no wp-config.php e agende o wp-cron.php no painel da hospedagem (a cada 5 minutos):
    define( 'DISABLE_WP_CRON', true );
  5. Peça ao host para liberar conexões de saída: se o destino é externo e responde rápido fora do servidor, o firewall da hospedagem pode estar bloqueando a saída. Abra um chamado pedindo a liberação das portas 80 e 443 para conexões de saída.
PHP
// functions.php do tema (ou plugin de snippets)
// Eleva o timeout das requisicoes HTTP do WordPress de 5s para 30s
add_filter( 'http_request_timeout', function( $timeout ) {
    return 30; // segundos
} );

// Aplica o mesmo teto tambem ao loopback do cron/REST
add_filter( 'http_request_args', function( $args ) {
    $args['timeout'] = 30;
    return $args;
} );

Perguntas frequentes

O que significa exatamente o número 28 no cURL error?
O 28 é o código de timeout do cURL: a requisição foi iniciada mas não recebeu resposta dentro do tempo limite. É diferente do erro 7 (não conseguiu nem conectar) e do 60 (certificado SSL inválido). Ver o 28 indica que a conexão até começou, mas demorou demais.
Por que o cURL error 28 aparece na requisição de loopback?
Loopback é o site chamando a própria URL para rodar cron e REST. Se o servidor não consegue se alcançar (por firewall, DNS interno ou autenticação básica ativa), a chamada estoura o tempo e gera o erro 28. Testar a URL /wp-cron.php no navegador ajuda a confirmar.
Aumentar o timeout resolve de vez o cURL error 28?
Só se a causa for uma resposta lenta que cabe em um teto maior. Se o destino estiver fora do ar ou bloqueado por firewall, subir o timeout apenas faz o site esperar mais antes de falhar. Nesses casos, a causa raiz no servidor precisa ser corrigida.
O erro afeta o WP-Cron. Meu agendamento parou?
Sim. Se o loopback falha por timeout, o WP-Cron não dispara e tarefas como publicações agendadas e backups deixam de rodar. A solução mais estável é desativar o WP-Cron e agendar o wp-cron.php por um cron real do painel da hospedagem.
Como sei se a culpa é de uma API externa e não do meu servidor?
Veja na Saúde do site qual domínio o erro cita. Se for um serviço de terceiro (gateway de pagamento, frete, IA), teste a disponibilidade dele à parte. Se a API estiver lenta ou caída, o timeout é dela; resta aumentar o limite ou aguardar a normalização.
O cURL error 28 tem relação com SSL?
Não diretamente. Problemas de SSL costumam dar cURL error 60 (certificado inválido) ou 35 (handshake). O 28 é puramente timeout. Se você vê os dois, trate-os separadamente: primeiro o SSL, depois o tempo de resposta.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes