Ustaw datę publikacji przed 1970 r

10

Mam niestandardowy typ postu o nazwie książki. Data wydania książki wynosi od 1700 do 1900 roku.

Chcę ustawić datę publikacji na te daty (dzięki czemu mogę wyszukiwać wyniki posortowane według roku), ale nie mogę ustawić daty przed 1 stycznia 1970 r.

Czy można to jakoś zrobić?

passatgt
źródło
O ile mogę stwierdzić, data wpisu jest ograniczona do 1902 r.
Wyck
Spojrzałem na to i post_datezestawy w bazie danych poprawnie na dowolną datę, którą próbowałem. Jednak post_date_gmtjest ustawiony niepoprawnie jako 1 stycznia 1970 r . - początek świata . Więc nie próbuj przejmować tego pola. Zrób to, co sugeruje Toscho.
s_ha_dum
+1 fajne pytanie! Wyszukiwanie 1970 ma interesujące wyniki tutaj i na SO . Wtyczka nie wydaje się być dobrze zakodowana, ale może być warta obejrzenia ...
brasofilo,

Odpowiedzi:

10

Nie używaj tego post_datepola do niczego, do czego nie jest przeznaczone. Zamiast tego użyj pola meta post. post_dateJest związanypost_date_gmt , co można uzyskać dziwny efekt uboczny nawet można dostać wcześniejszą datę do tego.

Stwórz więc post-meta pola i przeszukuj je według zapytania podatkowego . Zignoruj ​​pole domyślne.

W odpowiedzi na Twój komentarz: Nie używaj taksonomii.

  1. Taksonomie są tworzone w taki sposób, aby zezwalały na wiele haseł na post (zignoruj ​​tutaj post-formaty ). Schemat nie pasuje do Twojego przypadku użycia.
  2. Zapytania o taksonomię są drogie, przebiegają przez trzy tabele.
  3. Będziesz musiał zmienić domyślny interfejs, aby zapobiec wypadkom, takim jak wielokrotne zadania. Możliwe, ale nie do końca proste i może nie kompatybilne z przyszłością.

Raz też uruchomiłem wtyczkę menedżera książek, niestety wciąż ma ona wersję roboczą… ale mam kilka zaleceń dotyczących dat:

  1. Użyj dwóch typów postów: jeden dla opusu, jeden dla prawdziwych wydań ( opustyp byłby rodzicem dla wielu wydań). Możesz więc zapisać datę utworzenia w opusie, datę publikacji (język, edytor, tłumacz itd.) W wydaniu.

  2. Czytaj Making <time>bezpieczna dla historyków . Daty sprzed 1970 roku są trudne.

  3. Funkcje daty i czasu MySQL nie mogą obsłużyć wszystkich przypadków, w wyniku czego powstają niestandardowe procedury sortowania, w zależności od rozwiązania dla (2.).

fuxia
źródło
Dzięki! Mój klient przesłał mi plik xml z książkami i zaimportowałem go do Wordpress. Mam tylko lata na książki, więc postanowiłem stworzyć niestandardową taksonomię na te lata, ale potem odkryłem, że nie mogę na tej podstawie zamówić zapytania. Ale jeśli mogę zamówić według niestandardowego pola, to chyba tak też jest dobrze.
passatgt
Pozwól, że zapytam cię, co według ciebie jest wystarczająco dobrym rozwiązaniem, aby używać niestandardowej taksonomii na lata? Myślę, że mogę utworzyć niestandardowe zapytanie SQL, aby posortować wyniki na podstawie nazwy terminu (ponieważ struktura db jest zasadniczo taka sama w przypadku rozwiązania post meta) i myślę, że łatwiej jest zarządzać latami + książkami w zapleczu .
passatgt
@passatgt Zobacz moją aktualizację. Krótko: nie, nie rób tego. :)
fuxia
Rozumiem. Warto jednak wspomnieć, że mam 25 000 książek :)
passatgt
1

Ta wtyczka korzysta z biblioteki dat ADOdb autorstwa Johna Lim z PHP Everywhere, która - cytuję - „sprawia, że ​​formatowanie daty z datami sprzed 1970 roku jest urokiem”.

kopać
źródło
Ta wtyczka robi więcej, niż wymaga OP i nie jest jasne, czy formatowanie daty jest używane wewnętrznie przez wtyczkę, czy też umożliwia to samo formatowanie daty dla podstawowych funkcji WordPress. Czy znasz odpowiedzi na którekolwiek z tych pytań?
s_ha_dum
Chciałem tylko podkreślić bibliotekę Lima i sposób jej implementacji we wtyczce WP. Co do drugiego pytania, podstawowe funkcje nie ulegają zmianie, wtyczka przechowuje daty w niestandardowej tabeli bazy danych.
diggy