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

Como corrigir erro de timezone no PHP do WordPress

Time Full Services Time Full Services
Tipo Erro de PHP
Nome do erro Erro de timezone no PHP EN: PHP timezone error
Severidade Informativo
Descrição O erro de timezone no PHP do WordPress acontece quando a diretiva date.timezone não está definida no servidor, gerando avisos e horários incorretos em posts e agendamentos. O ajuste de fuso do site é feito nas configurações do WordPress, não com funções de timezone no PHP.

O que é o erro de timezone no PHP?

O PHP usa a diretiva date.timezone para saber em que fuso calcular datas e horas. Quando ela fica em branco, versões antigas do PHP emitem um aviso e assumem UTC, e qualquer código que dependa de hora local mostra o horário errado. No WordPress, porém, o fuso do site não vem dessa diretiva: ele é definido em Configurações, Geral, e o WordPress trata datas internamente em UTC. O erro de timezone, então, tem duas frentes: o aviso do servidor pela diretiva ausente e a confusão de horário causada por ajustar o fuso no lugar errado.

Como identificar

  • Aviso “date.timezone is not set” ou “It is not safe to rely on the system’s timezone settings” no log ou na tela.
  • Horários de publicação, comentários ou agendamentos aparecem adiantados ou atrasados várias horas.
  • Tarefas agendadas (wp-cron) disparam em horário diferente do esperado.
  • Plugins que mostram data e hora exibem o fuso UTC em vez do horário local configurado.
Antes de começar: Faça backup do php.ini, do .htaccess e do wp-config.php antes de editar. Um erro de sintaxe nesses arquivos derruba o site. Não use date_default_timezone_set para forçar o fuso: ajuste sempre pelo painel do WordPress para não corromper o cálculo interno de datas.

Como prevenir

  • Defina o fuso do site sempre em Configurações, Geral do WordPress, escolhendo a cidade
  • Declare date.timezone no php.ini com um identificador válido para evitar o aviso do servidor
  • Em código, use as funções de data do WordPress (que respeitam o fuso) em vez das funções nativas do PHP

Causa

  • Diretiva date.timezone vazia no php.ini do servidor, fazendo o PHP cair no padrão UTC.
  • Fuso do site não configurado em Configurações, Geral do WordPress, deixando datas em UTC.
  • Uso de date_default_timezone_set no functions.php, que conflita com o controle de fuso do próprio WordPress.
  • Servidor em UTC enquanto o público e o administrador estão em outro fuso, sem ajuste no WordPress.
  • Plugin que chama funções de data nativas do PHP em vez das funções de data do WordPress, ignorando o fuso do site.

Como resolver

  1. Ajuste o fuso pelo painel do WordPress: vá em Configurações, Geral e escolha sua cidade em Fuso horário (ex.: São Paulo). É aqui que o WordPress define a hora local de posts e agendamentos, não no php.ini.
  2. Defina date.timezone no php.ini: para acabar com o aviso do servidor, via FTP edite (ou crie) o php.ini na raiz e declare o fuso, usando um identificador válido da lista do PHP:
    date.timezone = "America/São_Paulo"
  3. Se não tiver php.ini, use o .htaccess: em servidores Apache, adicione a diretiva ao .htaccess da raiz para definir o fuso do PHP:
    php_value date.timezone "America/São_Paulo"
  4. Remova date_default_timezone_set do tema: se alguém adicionou date_default_timezone_set no functions.php, apague essa linha. Ela briga com o controle de fuso do WordPress e bagunça os horários do site.
  5. Confira o horário em Saúde do Site: publique um post de teste ou abra Ferramentas, Saúde do Site e confirme que data e hora batem com o fuso escolhido. Se ainda divergir, limpe o cache e revise os passos anteriores.
INI
; php.ini — define o fuso padrao do PHP e elimina o aviso date.timezone
; Use um identificador valido da lista oficial do PHP (nao um offset como -3)
date.timezone = "America/Sao_Paulo"

Perguntas frequentes

Onde defino o fuso horário do meu site WordPress?
Em Configurações, Geral, no campo Fuso horário. Escolha sua cidade, como São Paulo, e não um offset numérico, para o site acompanhar o horário de verão. É essa opção, e não o php.ini, que controla a hora de posts e agendamentos.
O que significa o aviso date.timezone is not set?
Significa que a diretiva date.timezone está vazia no servidor, então o PHP assume UTC e emite o alerta. Definir date.timezone no php.ini ou no .htaccess com um fuso válido faz o aviso desaparecer sem mexer no fuso do WordPress.
Posso usar date_default_timezone_set no functions.php?
Não é recomendado. O WordPress controla o fuso internamente e guarda datas em UTC. Forçar date_default_timezone_set conflita com esse controle e bagunça horários de posts, comentários e wp-cron. Ajuste o fuso só pelo painel.
Por que os horários ficaram errados depois de migrar o site?
Servidores novos costumam vir em UTC. Se o fuso não estiver definido em Configurações, Geral, ou se date.timezone mudou, datas passam a aparecer adiantadas ou atrasadas. Reconfirme a cidade no painel e a diretiva date.timezone no servidor.
Qual valor usar em date.timezone?
Use um identificador da base oficial de fusos do PHP, como America/São_Paulo, e não um offset como -3. O identificador trata automaticamente mudanças de horário, enquanto um número fixo ignora ajustes e volta a gerar horário errado.
O erro de timezone pode afetar tarefas agendadas?
Sim. O wp-cron calcula quando disparar com base no fuso. Se o fuso do PHP e o do WordPress divergem, agendamentos rodam em horário inesperado. Alinhar o fuso no painel e no php.ini faz as tarefas dispararem na hora certa.

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