Wraz z wydaniem WordPressa 4.9 pojawił się w nim silniejszy sposób keszowania niektórych elementów. A wraz z tym mechanizmem dostajemy bardzo niewygodny błąd.
Jeśli ktoś z Was próbował w ostatnich dniach dodać do swojego motywu szablon do wyświetlania treści (template) być może już zauważył, że na stronie edycji wpisu, w polu do wybierania szablonu, owego nie widać. Jeśli ktoś ma dużo czasu i mu się nie spieszy w pracy (albo zarabia od każdej spędzonej godziny) uzna to za mały problem: szablony bowiem się pojawiają, ale czasem nawet z godzinnym opóźnieniem. Gorzej, jeśli musimy coś zrobić „na już”.
Powodem tego błędu jest fakt, że wraz z nowym wydaniem wprowadzono cache’owanie z użyciem Transient API kilku nowych elementów, w tym także listy dostępnych szablonów. Ktoś, kto to zaimplementował, zapomniał jak wiele osób codziennie tworzy lub zmienia wordpressowe motywy – wszyscy oni potraktują to jako poważny błąd. I takim też jest, choć zwykły użytkownik nigdy na niego nie trafi.
Błąd został już zgłoszony i opracowywana jest poprawka. Najprawdopodobniej zostanie dodana reguła, który wyłączy mechanizm keszowania w sytuacji gdy stała WP_Debug ustawiona jest na true. To chyba najlepsze rozwiązanie, biorąc pod uwagę, że i tak developerzy zmienną tę powinni mieć zawsze tak ustawioną. Szkoda, że nie działa to już teraz i trzeba będzie zaczekać.
Rozwiązanie tymczasowe? Jedno to downgrade WordPressa do wersji 4.8, ale jest i drugie, lepsze: po dodaniu nowego szablonu do motywu, zwiększ numer wersji (w dowolny sposób, tak by był to ciąg unikalny, można więc do numeru wersji dodawać po prostu znacznik czasowy). Zmienna transient zawiera bowiem w sobie numer wersji motywu i przy kolejnym sprawdzeniu czy lista ma być wczytana od nowa, czy wzięta właśnie z cache, wartość tymczasowa nie zostanie znaleziona.
Nie jest to sposób najbardziej elegancki, ale działa.