WordPress

Nie można publikować postów typu niestandardowego, które nie obsługują tytułu i edytora. Zamiast tego są zapisywane jako wersje robocze

  • 2 marca, 2024
  • 4 min read
Nie można publikować postów typu niestandardowego, które nie obsługują tytułu i edytora. Zamiast tego są zapisywane jako wersje robocze


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:

  1. Zarejestruj niestandardowy typ postu bez obsługi tytułu i edytora.
  2. Dodaj metabox do niestandardowego typu postu z jednym lub większą liczbą niestandardowych pól.
  3. Utwórz nowy post z zarejestrowanym CPT.
  4. 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”.
Warto przeczytać!  przepisywanie adresów URL - przełącznik języka WPML dla niestandardowych reguł przepisywania

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:

  1. Ustaw status na „Oczekiwanie na recenzję” z listy rozwijanej w polu przesyłania na ekranie edycji posta.
  2. Na liście postów kliknij „Szybka edycja” i z rozwijanego menu wybierz status „Zaplanowane”.
  3. 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.

Warto przeczytać!  miniatury postów — domyślny obraz zastępczy, gdy nie ma wyróżnionego obrazu


Źródło