Nie można publikować postów typu niestandardowego, które nie obsługują tytułu i edytora. Zamiast tego są zapisywane jako wersje robocze
![Nie można publikować postów typu niestandardowego, które nie obsługują tytułu i edytora. Zamiast tego są zapisywane jako wersje robocze](https://oen.pl/wp-content/uploads/2023/09/apple-touch-icon@2.png)
Tworzę wtyczkę, która rejestruje niestandardowe typy postów bez obsługi tytułu i edytora. Pracuję nad tym projektem już kilka miesięcy i kiedy zaczynałem (wersja WP 6.3.1) było tak, że gdy klikałem „Publikuj”, posty te były zapisywane z tytułem „Auto Draft ”, nazwę podobną do „auto-draft-123” i status „publikuj”. Teraz (WP wersja 6.4.3), kiedy klikam „Publikuj”, tego typu posty są zapisywane ze statusem „wersja robocza”, bez nazwy i nie można zmienić statusu na „publikuj” bez bezpośredniej aktualizacji wartości w bazie danych (tzn. używając Adminera) lub wykonując pewne kroki, które opiszę poniżej.
Aby odtworzyć ten problem, wykonaj następujące czynności:
- Zarejestruj niestandardowy typ postu bez obsługi tytułu i edytora.
- Dodaj metabox do niestandardowego typu postu z jednym lub większą liczbą niestandardowych pól.
- Utwórz nowy post z zarejestrowanym CPT.
- Kliknij publikuj.
Środowisko nad którym pracuję to:
- Wersja WP 6.4.3
- System operacyjny: Windows 10 Home Edition
- WP jest uruchamiany lokalnie przez wersję Flywheel 8.2.1
Oto kroki rozwiązywania problemów, które podjąłem do tej pory:
- Utworzyłem nową witrynę w serwisie Local z zerową wtyczką poza tą, którą tworzę, ograniczając zachowanie wtyczki do jedynie rejestracji CPT bez obsługi tytułu ani edytora. Tematem użytym do testów jest Dwadzieścia dwadzieścia cztery.
- Usunąłem pliki cookie przeglądarki (Brave) i wyczyściłem pamięć podręczną.
- Wyłączyłem i włączyłem komputer (na wszelki wypadek).
- Zainstalowałem poprzednią wersję WordPressa, w której mam 100% pewność, że moja wtyczka działała wcześniej, czyli 6.3.1. Zrobiłem to w trybie lokalnym.
- Zainstalowałem poprzednią wersję Local, w której mam 100% pewność, że moja wtyczka działała, czyli 7.1.2.
- Skonfigurowałem serwer testowy z XAMPP, ręcznie pobrałem wersję WP 6.3.1 i tam ją zainstalowałem.
- Próbowałem z Chrome, Firefoxem i Edge (oprócz Brave).
- Zachowanie we wszystkich różnych środowiskach było takie samo, post CPT bez obsługi tytułu i żadnego edytora jest zapisywany jako „wersja robocza”, kiedy klikam „Publikuj” i nie można zmienić statusu na „publikuj” poprzez kliknięcie „Publikuj”.
Obecnie nie mam dostępu do innego komputera ani systemu operacyjnego.
Jest jednak kilka rzeczy, których się dowiedziałem:
- Kiedy klikam „Opublikuj”, parametr
post_status
jest wysyłany jako „wersja robocza”. - Jeśli dodam obsługę tytułów i redaktorów do CPT, ale ustawię
show_in_rest
jako fałszywe, po zapisaniu postu jako „wersja robocza” i dodaniu tytułu i tekstu do edytora, post nie jest publikowany po kliknięciu „Publikuj”, status „wersja robocza” pozostaje. - Jeśli ustawię
show_in_rest
to prawda, po zapisaniu posta jako „wersja robocza” można go opublikować, zmieniając jego status na „opublikuj” po kliknięciu „Publikuj” (ze wsparciem tytułu i redaktora).
Jedynym sposobem, w jaki mogę zmienić status na „opublikuj”, gdy post zostanie zapisany jako „wersja robocza”, bez dodawania obsługi edytora i niewyświetlania się w pozostałej części, jest wykonanie następującej czynności:
- Ustaw status na „Oczekiwanie na recenzję” z listy rozwijanej w polu przesyłania na ekranie edycji posta.
- Na liście postów kliknij „Szybka edycja” i z rozwijanego menu wybierz status „Zaplanowane”.
- Kliknij „Aktualizuj”.
Robię to wszystko za pomocą użytkownika Admin.
Myślę, że może to mieć związek z jakąś ostatnią aktualizacją w Gutenbergu, o której nie jestem świadomy, biorąc pod uwagę, że wypróbowałem starą wersję WP (6.3.1) i najnowszą (6.4.3) dołączoną do pakietu Local i w obu przypadkach wynik jest taki sam.