Não consigo definir o ano abaixo de 1899 para um cargo. Se eu definir o ano abaixo de 1899, ele será definido para o ano atual automaticamente.
Comprei o tema Linha do tempo e perguntei no fórum de suporte. Eles responderam:
Isso soa como uma limitação criada pelo seu provedor de hospedagem. Nada no tema está impedindo a data que você atribui - como você pode ver, a demo tem postagens usando datas nos anos 1400. Tente entrar em contato com seu provedor de hospedagem e veja se eles têm alguma ideia de como lidar com isso.
date
date-time
post-editor
Espartanos
fonte
fonte
WP_DEBUG
e edite uma mensagem de erro na sua pergunta. Eu poderia ter feito parecer que sim, mas um link para uma versão funcional do tema em questão também não ajuda muito.Respostas:
Isso não é realmente uma resposta, apenas uma tentativa de encontrar o contexto específico para esse problema. Instale o seguinte plugin no seu site, tente definir as três datas e adicione seu resultado ao segundo
<pre>
na tabela abaixo.A essência do plug-in pode ser conferida aqui .
0999
, clique em Atualizar . Ele foi salvo ou alterado para a data atual?1899
,2020
e2039
.fonte
Pergunta e expectativas
Embora a forma literal desta questão seja prática no contexto (ano de 1899), é um pouco vaga no sentido teórico. Quantos anos tem a idade? Até onde no passado podemos querer ir? E o futuro?
Desde que o WordPress começou como mecanismo de blog, nesse sentido contextual , ele evoluiu para lidar com o seguinte período de tempo:
À medida que o uso do WordPress evoluiu para aplicativos que não são de blog, esses projetos (geralmente história e arte, como eu já vi nos relatórios) começaram a atingir vários problemas com datas fora desse período.
Para o propósito de minha pesquisa, formulei as seguintes perguntas:
Limitações da plataforma
Como o WordPress é um aplicativo PHP e usa o MySQL para armazenamento de dados, está sujeito às suas limitações.
MySQL
O WordPress armazena as datas de postagem na
post_date
coluna doDATETIME
tipo no MySQL.De acordo com a documentação, esse tipo suporta os anos 1000 a 9999 :
No entanto, também diz que valores anteriores podem funcionar, sem menção de valores posteriores:
Embora empiricamente eu tenha observado valores fora do intervalo de trabalho, isso é anedótico e fica fora da nossa condição de confiabilidade.
PHP
Na programação PHP, a representação de data e hora do Unix é amplamente usada. De acordo com a documentação para nossos propósitos (PHP 5.2+ e ambiente genérico de 32 bits), ele suporta os anos (na íntegra) de 1902 a 2037 :
Além disso, o
Date/Time
manuseio mais recente é de 64 bits e varia de aproximadamente -292 a 292 bilhões de anos , o que provavelmente excede as necessidades da humanidade no momento.Limitações do WordPress
O WordPress introduz e herda algumas limitações adicionais em sua base de código.
Fluxo de dados
Do ponto de vista básico do fluxo de trabalho do usuário, existem dois processados relacionados à data:
Observe que esses são processos tecnicamente completamente diferentes e independentes. Como explicado mais detalhadamente, seus intervalos não se sobrepõem e salvar a data correta não é igual à capacidade de lê-la corretamente no ambiente do WordPress.
Limites explícitos
_wp_translate_postdata()
processa o ano (enviado como número distinto do formulário) e:wp_checkdate()
, que chama PHP nativocheckdate()
, que impõe limite de 1 a 32767Limites implícitos
strtotime()
A função PHP é usada várias vezes e está sujeita ao carimbo de data e hora do Unix acima mencionado, no nível mais baixomysql2date()
que afeta todas as leituras de datas do banco de dados, intervalo herdado de 1902 a 2037get_gmt_from_date()
, que espera que o ano seja([0-9]{1,4})
, limitando de 1 a 9999 , forte possibilidade de processamento semelhante em outras funções que exigirão que uma auditoria de código mais completa seja enumeradaPossibilidade de soluções alternativas
wp_checkdate()
possuiwp_checkdate
filtro, o que permite substituir essa verificação de validaçãodate_i18n()
qual possuidate_i18n
filtro, teoricamente permite interceptar e reprocessar completamente a saída de datas para fazer a interface, por mais desafiador que seja se a função já for ultrapassada (fora da faixa (false
))Conclusões
Para propósitos práticos e portabilidade dos dados, o período de postagem do WordPress parece ser igual ao carimbo de data e hora do Unix de 32 bits e consiste nos anos de 1902 a 2037, inclusive .
Para qualquer operação pós-data fora deste intervalo, o ambiente deve ser auditado (intervalo de 64 bits de registros de data e hora Unix, MySQL funcionando de fato ou armazenamento de banco de dados alternativo para os valores). Para intervalos maiores ( abaixo de 1000, acima de 9999 ), é provável que sejam necessárias quantidades consideráveis de código personalizado.
Para qualquer implementação de datas arbitrárias, faz sentido:
Date/Time
código completamente personalizado e / ou funções do WordPress auditadas para não serem afetadas pelos limites de carimbo de data / hora do UnixCama de teste de código
O código a seguir e o conjunto de anos escolhido a dedo foram usados para a pesquisa acima e o teste de conclusões:
fonte
r()
?