Przejdź do treści
Gutenberg 23.7: galerie, Global Styles i dziesiątki poprawek edytora
Piotr Kowalski
Piotr Kowalski 7 August 2026 · 9 min czytania

Gutenberg 23.7: galerie, Global Styles i dziesiątki poprawek edytora

Gutenberg 23.7 porządkuje przede wszystkim codzienną pracę w edytorze: usuwa kolizje pływających i przypiętych bloków, przywraca poprawne podglądy urządzeń oraz dopracowuje dynamiczną galerię. Wydanie zawiera też zmiany w komponentach, współpracy w czasie rzeczywistym, wydajności i narzędziach dla osób rozwijających WordPressa.

Najważniejsze zmiany w Gutenberg 23.7

Gutenberg 23.7 jest dostępny jako wtyczka do pobrania. Możesz też uruchomić wersję demonstracyjną w WordPress Playground.

Poprawki widoczne w edytorze blokowym (Block Editor)

W tej wersji pływające bloki nie nachodzą już na bloki przypięte. Poprawiono też pozycję pustego przycisku dodawania bloku w blokach, które przechwytują własny pasek narzędzi, a blok Cytat wyróżniony respektuje w edytorze własną wysokość wiersza – tak samo jak na stronie publicznej.

W widokach mobilnym i tabletowym ponownie działają stałe wysokości podglądu urządzeń. Uporządkowano również kilka zachowań zaznaczenia i kursora: usuwanie pustych bloków klawiszem Delete do przodu zachowuje właściwą pozycję kursora, Shift+klik działa jako gest wielokrotnego zaznaczania, a Shift+strzałka rozszerza zaznaczenie bloków, gdy przeglądarka nie ma natywnego zaznaczenia.

Edytor nie przewija już całej strony podczas przesuwania kursora w bloku wyższym niż viewport. Naprawiono wklejanie plików do RichText, wyłączono transformację wejścia bez onReplace, usunięto tabIndex z edytowalnych elementów, aby przywrócić zaznaczanie Shift+klik, oraz zapobiegnięto przejmowaniu cofania przez synchronizację bloków kontrolowanych w RTC, czyli współpracy w czasie rzeczywistym.

Poprawki interfejsu edytora blokowego w Gutenberg 23.7
Wydanie koncentruje się na drobnych, lecz zauważalnych poprawkach układu edytora. — Forrás: WordPress.org

Dynamiczny tryb bloku Galeria

Wprowadzony w Gutenberg 23.6 dynamiczny tryb bloku Galeria miał niejednoznaczny przycisk „Convert to images”. W Gutenberg 23.7 zmieniono jego nazwę na „Detach”, a przed odłączeniem obrazów wyświetla się okno modalne, które wyjaśnia konsekwencje tej operacji.

Konwersja dynamicznej galerii do odłączonych obrazów tworzy teraz jeden poziom cofania. W tej części biblioteki bloków naprawiono także zachowanie list numerowanych po wcięciu, wyjście z bloków Okładka i Akordeon klawiszem Enter, brak opcji „Add block” w interfejsie linków wewnątrz części szablonu oraz etykietę ustawienia „Offset” w bloku Pętla zapytania, dodając kontekst tłumaczenia.

Przycisk Detach w dynamicznym trybie bloku Galeria
Nowa nazwa przycisku precyzyjniej opisuje odłączenie obrazów od dynamicznej galerii. — Forrás: WordPress.org
Okno wyjaśniające odłączanie obrazów w bloku Galeria
Przed operacją edytor wyjaśnia, co stanie się z obrazami. — Forrás: WordPress.org

Globalne style, matematyka i formularze

Eksperymentalny interfejs dziedziczenia Global Styles jest teraz funkcją opt-in. Włączysz go na stronie ustawień Gutenberg Experiments; panel inspektora bloku odzwierciedla przy tym odziedziczone wartości Global Styles, także style elementu linku w blokach będących linkami.

Blok Math używa ValidatedTextareaControl dla wejścia LaTeX. Błąd parsowania nie przerywa już pisania po każdym znaku: komunikat pojawia się dopiero, gdy pole po raz pierwszy straci fokus, a czytnik ekranu nie ogłasza błędu przy każdym naciśnięciu klawisza.

Komponenty Combobox, Select i SelectControl otrzymały subkomponenty Group oraz GroupLabel, dzięki czemu opcje grupowane działają spójnie w rodzinie kontrolek z wyskakującą listą. Dodano też prymityw Autocomplete.Row, możliwość zaznaczania zakresu przez Shift+klik w układach picker-table, picker-grid i picker-activity komponentu DataViewsPicker oraz obsługę właściwości sandbox przez komponent sandbox.

Zmiany funkcjonalne i poprawki błędów

Lista zmian obejmuje również następujące elementy interfejsu, bloków i edytora:

  • Style bazowe pozwalają nadpisać kolor obramowania fokusu w outset-ring__focus; usunięto parametr koloru akcentu z input-control i prywatny komponent Theme.
  • Dashboard widgetów mierzy dopasowanie nagłówka oraz dokumentuje chrome, a prymitywy widgetów są dostarczane jako moduł skryptowy. Eksperymentalne widgety Dashboardu wzmacniają sanityzację href dla akcji i linków pomocy.
  • Pola wyszukiwania w DataViews i bibliotece fontów mają stałą szerokość, co eliminuje skoki układu. Rozmiar czcionki w wyborze strony nawigacji biblioteki fontów dopasowano do DataViews.
  • Pole input typu number ukrywa natywne kontrolki zmiany liczby, a SearchControl renderuje sufiks tylko wtedy, gdy faktycznie istnieje jeden sufiks.
  • Dodano pełne pokrycie scenariusza użytkownika dla bloku Spis treści. Blok wideo poprawnie obsługuje tag VIDEO zapisany wielkimi lub mieszanymi literami, a znacznik ikony Tumblr w bloku Social Link nie zawiera zbędnego tagu zamykającego.
  • Edytor mediów pokazuje stan ładowania podczas wczytywania przyciętego pliku. Usunięto zbędną flagę __heicUploadSupport, a przesyłanie długich animowanych GIF-ów nie zawiesza się przy konwersji – dla nieruchomych wyników dekodowana jest wyłącznie pierwsza klatka.
  • Kontrolka obrazu tła nie dubluje obramowania fokusu. Gdy dwa presety kolorów mają ten sam kod hex, panel Global Styles zapisuje i pokazuje właściwy preset; GradientPicker wybiera preset po slugu, więc identyczne gradienty zachowują własną tożsamość.
  • Ustawienie edytora responsiveEditingEnabled pozwala ukryć opcję Responsive styles. Pola, które samodzielnie obsługują cofanie, pozostawiają undo przeglądarce.
  • Nagłówki meta boxów otrzymały styl zgodny z panelami Gutenberga. Powiadomienia są opakowane w ThemeProvider z promieniem narożników równym 0, a na iOS usunięto obejście powodujące skakanie interfejsu i dodano zachowanie typewriter.
  • Notatki zapisują blok docelowy przed zapisaniem notatki blokowej, rejestrują format notatki inline podczas importu, spójnie raportują sukces zapisu i synchronizują wybór na pasku bocznym z markerem inline pod kursorem. Opuszczenie wątku notatki anuluje trwające podświetlenie po najechaniu.
  • Okno Post Lock nie przełącza już komunikatu na „Someone else has taken over” dla użytkownika bez dostępu do zablokowanego wpisu.
  • DataForm nie przejmuje fokusu podczas walidacji karty i szczegółów. Poprawiono także nadpisanie głównego pliku .prettierrc.js, jsxImportSource w Storybooku oraz migrację stylów ToolsPanel do modułu SCSS.
  • API konfiguracji widoku ma zaktualizowane wersjonowanie. Odrzuca scalanie danych o niezgodnym kształcie, definiuje semantykę pustych tablic i usuwa wartości null z dołączanych elementów; createInterpolateElement łagodnie obsługuje niedopasowane tagi zamykające.
  • REST API mediów zawiera przeniesioną poprawkę kontroli rozmiaru pliku przy przesyłaniu zasobu przez ścieżkę URL. Szablony mediów nie wymuszają już crossorigin na tagach IMG, a wp-build synchronizuje listę pól preload szablonu strony z core-data.
  • W theme.json selektor :where() wyrównuje specyficzność klas presetów na poziomie bloku. Wspólne zarządzanie presetami wyodrębniono z cieni i rozmiarów fontów.
  • RTC wyłącza Quick Edit, gdy wpis jest edytowany, kompresuje dane podczas serializacji i zachowuje niezapisane zmiany współpracowników, gdy inny użytkownik zapisze wpis. Kod współpracy w czasie rzeczywistym przeniesiono do lib/experimental/collaboration.
  • Filtr KSES dla wzmianek z core odłączono w teście baseline strip. Warstwa danych przeniosła komponent EntitiesSavedState poza edytor.
  • Kontrolki wyrównania lepiej obsługują właściwości, a blok Nawigacja aktualizuje aria-expanded po najechaniu podmenu w nakładce.
  • Rich text odczytuje atrybut contentEditable w ownsSelection, aby uniknąć wymuszonego układu, a zmiana ma też usunąć regresję wydajności pisania. FlatTermSelector nie pobiera ponownie niepotrzebnie terminów.
  • Dodano testy end-to-end dla rozszerzalności konfiguracji widoku oraz dla zgodności React 19 z logicznym atrybutem inert. Metryka „Selecting blocks” w testach wydajności nie raportuje już błędnie 0 ms, a test usuniętego użytkownika RTC działa na multisite.

Zmiany dla osób rozwijających Gutenberg

Wydanie zawiera liczne zmiany w kodzie, zależnościach, dokumentacji i build tooling. Dotyczą one zarówno paczek JavaScript, jak i procesów wydawniczych oraz testów.

  • Interactivity API refaktoryzuje dyrektywy do samorejestrujących się modułów. URLInput stał się komponentem funkcyjnym, narzędzia duotone przeniesiono do global-styles-engine, a zduplikowane implementacje narzędzi presetów zredukowano.
  • Komponent Autocomplete wiąże listę podpowiedzi przez aria-controls i aria-haspopup, ExternalLink używa wspólnego mixinu obramowania fokusu, a hook useSelectionProps nie zależy od układu. Disabled, FormTokenField i SearchControl przeszły na moduły SCSS.
  • Pakiety aktualizują date-fns do 4.4.0, memize do 2.1.1 oraz Color.js do 0.7.1. Zaktualizowano też zależność colorjs.io i usunięto obejście błędu; opublikowana paczka theme nie zawiera katalogu src.
  • Biblioteka bloków zabezpiecza się przed wartościami atrybutów rzucającymi błędy. editableRoot jest prywatnym ustawieniem bloku, parentPageID w Page List używa operatora null coalescing, a Spis treści używa str_contains() zamiast sprawdzania strpos().
  • Usunięto zbędną pragmę @jest-environment jsdom i dodano regułę lintującą ten przypadek. Usunięto też niepotrzebne właściwości __next40pxDefaultSize z kontrolek formularza oraz domyślny akapit z szablonu panelu zakładki Tabs.
  • Walidacja ikon SVG wymaga viewBox. Edytor witryny zastępuje użycie Theme w loaderze canvasu CSS-em.
  • ESLint rozszerza denylistę o brakujące komponenty niewskazane do użycia. webpack-dev-server aktualizuje się do ^5.2.1, a workflow GitHuba poprawnie sprawdza changelog dla PR-ów z forków.
  • RTC używa array_any() przy sprawdzaniu nowszej kompresji w serwerze synchronizacji polling oraz str_contains() w WP_Sync_Config. Storybook buduje specyfikator resolve jako łańcuch w stylu URL, a narzędzia rozwiązują zależności niezależnie od układu node_modules.
  • Build dodaje niezależną paczkę vendor dla React 18, obsługuje ścieżki projektu ze spacjami w skrypcie deweloperskim, uwzględnia wyodrębnione style w hashu wersji assetów i zapobiega nieskończonej pętli budowania workerów.
  • Poprawiono wstępne sprawdzanie dostępu npm, jawne rozwiązywanie Prettiera dla izolowanego układu oraz typowanie właściwości polimorficznych na przecięciu typów. Storybook nie używa już Emotion jako źródła importu JSX.
  • Jest ignoruje poprawnie pliki deklaracji TypeScript i aktualizuje się do wersji 30, co jest zmianą niekompatybilną. Flakiness.io działa wyłącznie w kanonicznym repozytorium Gutenberga.
  • Narzędzia wydawnicze wymagają działającego GitHub CLI przy cherry-pickingu. Zaktualizowano też zrzut ekranu formularza wydania dla nowego interfejsu etykiety Release na GitHubie.
  • Dokumentacja dodaje instrukcję nvm use do AGENTS.md, wzorzec stopniowego odkrywania instrukcji i umiejętności agentów oraz brakującą dokumentację globalną w table-of-contents/index.php.
  • Doprecyzowano dokumentację zachowania getBlock z kontrolerami bloków wewnętrznych, wytyczne dla iframe po Gutenberg 23.6, wskazówki dotyczące dialogów i drawerów oraz dokumentację serwerowych filtrów konfiguracji widoku, które muszą zwracać kontener.
  • Uzupełniono docblocki plików i klas dla WP_Icon_Collections_Registry, rozszerzono przewodnik przenoszenia zmian do core WordPressa, zaktualizowano przykłady schematu kolorów admina w Storybooku i użyto linku dla URL w dokumentacji inline.

Co warto sprawdzić po aktualizacji

Jeśli rozwijasz motyw blokowy albo własne rozszerzenia edytora, sprawdź dynamiczne galerie, dziedziczenie Global Styles oraz widoki mobilne i tabletowe. Przetestuj też własne kontrolki oparte na Select, Combobox lub SelectControl, zwłaszcza gdy grupujesz opcje.

W projektach wykorzystujących LaTeX oceń zachowanie walidacji po opuszczeniu pola. Przy integracjach z RichText, konfiguracją widoku, mediami REST API oraz współpracą RTC warto uruchomić testy regresji, ponieważ Gutenberg 23.7 zmienia zachowanie tych obszarów.

Dołącz do społeczności HelloWP!

Porozmawiaj z nami o WordPressie i tworzeniu stron oraz dziel się doświadczeniami z innymi deweloperami.

- członkowie
- online
Dołącz

Używamy plików cookie, aby poprawić Twoje doświadczenia. Kontynuując, zgadzasz się na naszą Politykę plików cookie.