Imposta la data di pubblicazione prima del 1970


10

Ho un tipo di post personalizzato chiamato libri. La data di pubblicazione dei libri è tra il 1700 e il 1900.

Voglio impostare la data di pubblicazione su queste date (quindi posso interrogare i risultati ordinati per anno) ma non riesco ad avere una data impostata prima del 1 gennaio 1970.

È possibile farlo in qualche modo?


Per quanto ne so, la data del post è limitata al 1902.
Wyck,

Ho dato un'occhiata a questo e post_datenel database si imposta correttamente su qualsiasi data che ho provato. Tuttavia, post_date_gmtè impostato in modo errato come 1 gennaio 1970, l'inizio del mondo . Quindi non provare a cooptare quel campo. Fai ciò che toscho suggerisce.
s_ha_dum,

+1 bella domanda! La ricerca del 1970 ha risultati interessanti qui e in SO . Il plugin non sembra molto ben codificato, ma potrebbe valere la pena dare un'occhiata ...
brasofilo,

Risposte:


10

Non utilizzare il post_datecampo per nulla per cui non è stato creato. Utilizzare invece un meta campo post. Il post_dateè inevitabile chepost_date_gmt , si otterrebbe strano effetto collaterale, anche si potrebbe ottenere una data precedente in quello.

Quindi crea post campi meta e interroga quelli per query fiscale . Ignora il campo predefinito.

In risposta al tuo commento: non utilizzare una tassonomia.

  1. Le tassonomie sono costruite per consentire più termini per post (ignorare i formati post qui). Lo schema non corrisponde al tuo caso d'uso.
  2. Le query di tassonomia sono costose, sono suddivise in tre tabelle.
  3. Dovresti cambiare l'interfaccia predefinita per prevenire incidenti come compiti multipli. Possibile, ma non esattamente semplice e forse non compatibile con il futuro.

Ho avviato una volta anche un plugin per la gestione dei libri, purtroppo è ancora in bozza ... ma ho alcuni consigli sulle date:

  1. Usa due tipi di post: uno per l'opus, uno per le edizioni reali (il opustipo sarebbe un genitore per più edizioni). Quindi è possibile memorizzare la data di creazione nell'opus, la data di pubblicazione (la lingua, l'editor, il traduttore e così via) nell'edizione.

  2. Leggi Rendere <time>sicuro per gli storici . Le date prima del 1970 sono difficili.

  3. Le funzioni di data e ora di MySQL non sono in grado di gestire tutti i casi, si finisce con alcune routine personalizzate per l'ordinamento, a seconda della soluzione per (2.).


Grazie! Il mio cliente mi ha inviato un file XML con i libri e l'ho importato in WordPress. Ho solo gli anni per i libri, quindi ho deciso di creare una tassonomia personalizzata per gli anni, ma poi ho scoperto che non posso ordinare la query in base a questo. Ma se posso ordinare per campo personalizzato, allora immagino che vada bene anche in questo modo.
passatgt

Lascia che ti chieda, cosa ne pensi, è una soluzione abbastanza buona da usare una tassonomia personalizzata per gli anni? Penso di poter creare una query sql personalizzata per ordinare i risultati in base al nome del termine (perché la struttura del db è sostanzialmente la stessa con la soluzione post meta) e penso che sia un po 'più facile gestire gli anni + i libri nel backend .
passatgt

@passatgt Vedi il mio aggiornamento. Breve: no, non farlo. :)
fuxia

Fatto. Vale la pena ricordare che ho 25.000 libri :)
passatgt

1

Questo plugin utilizza la libreria di date ADOdb di John Lim di PHP Everywhere, che è - cito - "rendere affascinante la formattazione della data con date precedenti al 1970".


Quel plugin fa di più di quello che l'OP sta chiedendo e non è chiaro se la formattazione della data sia utilizzata internamente dal plugin o se abiliti anche la stessa formattazione della data per le funzioni principali di WordPress. Conosci le risposte a una di quelle domande?
s_ha_dum

Volevo solo evidenziare la libreria di Lim e come è implementata in un plugin WP. Per quanto riguarda la seconda domanda, le funzioni principali non vengono modificate, il plug-in archivia le date in una tabella di database personalizzata.
diggy
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.