Dokumentacja MevvBlocks

Sto pikseli na komputerze, czterdzieści na telefonie — w edytorze blokowym.

Edytor bloków WordPressa nie ma punktów granicznych dla wartości stylów. MevvBlocks najpierw zamyka tę lukę, a wokół niej kładzie to, czego witrynie potrzeba, żeby stać o własnych siłach: 110 bloków, osiem stylów bloków, szablony motywu, siatkę treści i kreator pętli, silnik formularzy, formularz newslettera, wyskakujące okna, jeden ekran dla palety witryny, audyt dostępności, który mówi prawdę zamiast ją zakrywać, oraz ekran Core Web Vitals zasilany danymi Twoich własnych odwiedzających.

Instalacja

Wtyczka MevvBlocks wymaga WordPress 6.0 lub nowszego oraz PHP 8.1 lub nowszego. Nie ma żadnej innej zależności: żadnej zewnętrznej biblioteki, żadnej czcionki z cudzego serwera, żadnego kroku budowania.

  1. Wgraj i włącz wtyczkę.
  2. Należy otworzyć stronę w edytorze bloków i dodać blok Kontener.
  3. W jego wnętrzu umieszcza się wybrane bloki. Można je znaleźć w kategorii Projekt.
  4. Resztą zarządza się z menu MevvBlocks na pasku bocznym panelu administracyjnego.
  • WooCommerce jest opcjonalny. Jego instalacja dodaje dwa bloki.
  • MevvBridge jest opcjonalna. Po przejściu z kreatora Elementor to właśnie wtyczka MevvBlocks sprawia, że tamte strony znów dają się edytować.
  • MevvLegal jest opcjonalna. Gdy jest obecna, blok mapy przekazuje jej swoje osadzenie, aby mapa nie wczytała się przed wyrażeniem zgody przez odwiedzającego.

Wersja Pro to osobna wtyczka instalowana obok darmowej i deklaruje darmową wtyczkę jako twarde wymaganie. Klucz licencyjny wprowadza się na ekranie Lisans (licencja). Bez wersji Pro wtyczka MevvBlocks w ogóle nie wysyła żądań do naszych serwerów.

Styl osobno dla każdego rozmiaru ekranu — luka, którą to zamyka

Bloki rdzenia przyjmują jedną wartość dopełnienia, jedną minimalną wysokość, jedną liczbę kolumn. Ta wartość obowiązuje na każdym ekranie. Jeżeli sekcja potrzebuje 100 pikseli dopełnienia na komputerze i 40 na telefonie, rdzeń nie potrafi tego wyrazić — a ta jedna luka jest najczęstszym technicznym powodem instalowania kreatora stron.

Wtyczka MevvBlocks przechowuje trzy wartości zamiast jednej — komputer, tablet, telefon. Progi są stałe:

Komputer
Bez zapytania medialnego — wartość bazowa.
Tablet
Obowiązuje od 1024 pikseli w dół.
Telefon
Obowiązuje od 767 pikseli w dół.

Te same dwie liczby używane są wszędzie indziej we wtyczce — przy progu menu hamburgerowego, przy liczbach kolumn siatki. Swobodnego pola pikseli celowo nie udostępniono: ktoś, kto wybrałby 900, dostałby hamburger przy 900, podczas gdy jego dopełnienie nadal zmieniałoby się przy 1024, a dwa systemy breakpointów oznaczają układy sprzeczne same ze sobą.

Wartości żyją we własnych atrybutach bloku, wewnątrz pola post_content — nie w osobnej tabeli i nie w polach meta wpisu. CSS powstaje na serwerze, w chwili żądania, i jest wypisywany jako mały blok stylów obok elementu, do którego należy.

Dlaczego nie zapisywać CSS razem ze stroną? Ponieważ zapisany kod HTML potrafi nieść tylko jeden breakpoint. Dopiero renderowanie w chwili żądania czyni trzy wartości w ogóle możliwymi — i dlatego wygasła licencja nigdy nie może zgasić opublikowanej strony: na tej ścieżce nie ma ani jednego sprawdzenia licencji.

Podgląd w edytorze — co pokazuje i czego nadal nie potrafi

Na tej stronie było kiedyś napisane, że podgląd jest przybliżeniem. W zakresie układu już nim nie jest. Kanwa prosi teraz serwer o ten sam CSS, który wypisze strona, i stosuje go do tych samych klas opakowujących, których używa front witryny.

Co jest dziś w kanwie wierne: układ kontenera (kierunek, kolumny, odstęp, wyrównanie), dopełnienie, margines, tło, obramowanie, zaokrąglenie, cień, minimalna wysokość, typografia, transformacje, maski i pozycjonowanie — a wartości dla tabletu i telefonu włączają się przy zmianie rozmiaru, ponieważ kanwa jest ramką iframe i zapytania medialne działają w jej wnętrzu.

Dlaczego CSS pochodzi z serwera, a nie jest odtwarzany w języku JavaScript: silnik stylów jest jeden, a druga kopia rozjechałaby się z pierwszą. W dniu, w którym ktoś dodałby ustawienie do jednej, a zapomniał o drugiej, edytor byłby błędny, twierdząc jednocześnie, że jest dokładny — gorzej niż dawne uczciwe przybliżenie.

Co wciąż nie jest dokładne: reguły celujące w znaczniki wewnątrz bloku. Na kanwie blok rysuje własne elementy edycyjne, więc selektor napisany pod strukturę front-endu nie ma do czego pasować. Zamknięcie tej luki oznacza uczynienie znaczników edycji identycznymi z opublikowanymi dla każdego ze stu dziesięciu bloków; to prawdziwa praca i nie została wykonana.

Zmierzone, a nie zadeklarowane: ta sama sekcja została wyrenderowana dwa razy przy tym samym arkuszu stylów — raz tak, jak wypisuje ją front witryny, raz tak, jak buduje ją kanwa — i porównano szesnaście właściwości układu na każdym elemencie. Dawna kanwa różniła się w dwudziestu czterech z nich. Teraz jest to zero na sześćdziesiąt cztery. Narzędzie, które to mierzy, znajduje się w kodzie źródłowym wtyczki (tools/onizleme-esitlik.js), a najpierw skierowano je na stary znacznik, aby udowodnić, że nie jest ślepe.

Bloki

110 bloków, albo 87 bez WooCommerce. Wszystkie są w wersji darmowej poza trzema oznaczonymi niżej jako Pro; żaden inny blok nie jest wyłącznie dla Pro. Mieszkają w kategorii Design wstawiacza, a klucze ustawień, które każdy z nich zapisuje, są wypisane w docs/BLOK-AYARLARI.md wewnątrz wtyczki — to plik generowany, więc nie może odejść od kodu.

Grupy poniżej to te same pięć, których wtyczka używa na własnych stronach pokazowych.

Tekst i działanie
Kontener, Nagłówek, Tekst, Przycisk, Linia rozdzielająca, Odstęp, Kotwica, Obraz, Shortcode, Cytat, Lista kontrolna, Kod, Wezwanie do działania, Ikona, Kafelek z ikoną, Lista z ikonami, Animowany nagłówek, Alert, Przełącznik, Zagnieżdżone zakładki z panelami zakładek, Zakładki, Akordeon, FAQ, Kroki
Dane i cennik
Licznik, Pasek postępu, Pasek danych, Wykres kołowy, Kafelek liczbowy, Tabela cennika, Lista cen, Opinia, Ocena gwiazdkowa, Karuzela opinii, Członek zespołu, Odliczanie, Odznaka, Pas logotypów, Przełącznik treści i Panel przełącznika (Pro)
Portfolio i mapa
Oś czasu, Tabela, Porównanie, Spis treści, Mapa, Siatka treści, Mapa witryny, Portfolio (Pro)
Multimedia i formularze
Wideo, Audio, Playlista, Galeria, Przed / Po, Obracany kafelek, Baner, Punkt na obrazie, Dymek podpowiedzi, Kanał społecznościowy, Ikony społecznościowe, Udostępnianie, Slider, Slajdy, Tekst na ścieżce, Panel wysuwany, Przyciski kontaktu, Pasek ogłoszeń, Postęp czytania, Czas czytania, Do góry, Formularz, Formularz logowania, Formularz rejestracji, Newsletter, Formularz wyszukiwania, Menu nawigacji, Lottie (Pro)
Projekt i ruch
Animacja SVG, Kafelek z obrazem, Prawa autorskie oraz osiem stylów bloków opisanych poniżej. Ruch nie jest blokiem: panel z animacją wejścia, pozycją przyklejoną i paralaksą jest dodawany do każdego bloku MevvBlocks.
Witryna i szablony motywu
Logo witryny, Tytuł witryny, Opis witryny, Tytuł strony, Okruszki, Informacje o wpisie, Ramka autora, Komentarze, Poprzedni / Następny, Tytuł archiwum, Opis archiwum
WooCommerce (23)
Produkty, Kategorie produktów, Obrazy produktu, Nazwa produktu, Cena produktu, Ocena produktu, Krótki opis, Opis produktu, Metadane produktu, Informacje dodatkowe, Zakładki produktu, Dodaj do koszyka, Stan magazynowy, Produkty powiązane, Sprzedaż dodatkowa, Sprzedaż krzyżowa, Minikoszyk, Koszyk, Zamówienie, Moje konto, Śledzenie zamówienia, Sortowanie produktów, Licznik wyników — dodawane tylko wtedy, gdy WooCommerce jest aktywny

Uwaga o tych dodanych najpóźniej, bo każdy niesie decyzję, którą widać na stronie:

Przełącznik
Natywny <details>, który przyjmuje w środku dowolne bloki i może być zagnieżdżony w innym przełączniku. Ustawienia: baslik (tekst podsumowania) i acik (otwarty przy wczytaniu). Nie jest potrzebne żadne id, więc dwa przełączniki na tej samej stronie nie mogą się zderzyć.
Zagnieżdżone zakładki i panel zakładki
Grupa zakładek, której panele są zwykłymi blokami wewnętrznymi, więc panel może mieścić cokolwiek — łącznie z inną grupą zakładek. Ustawienia grupy: yon (poziomo lub pionowo) i acik (zakładka otwarta przy wczytaniu); każdy panel ma baslik. Pasek zakładek niesie wzorzec zakładek ARIA ze strzałkami, Home i End, a identyfikatory są unikalne w obrębie grupy, więc zagnieżdżanie jest bezpieczne. Do grupy należą tylko panele będące jej bezpośrednimi dziećmi. Pasek pionowy staje się poziomy na wąskim ekranie.
Wykres kołowy
Koło albo pierścień (tur), wiersze zapisane jako „etykieta | wartość | opcjonalny kolor” w satirlar, plus baslik. Okrąg jest rysowany przez stroke-dasharray i niesie role="img"; te same wartości są drukowane pod spodem jako lista tekstowa z procentami, bo wykres, którego nikt nie może odczytać, jest ozdobą. Nie animuje się.
Playlista
Audio albo wideo (tur), z baslik i powtarzalną listą ścieżek: dosya, baslik, sure, poster i altyazi (ścieżka WebVTT). Każda ścieżka jest drukowana jako zwykły odnośnik, więc lista jest użyteczna, zanim uruchomi się jakikolwiek skrypt; ze skryptem wybór ścieżki podmienia źródło w miejscu.
Kanał społecznościowy
Wpisy wybrane przez Ciebie ręcznie, rozłożone w sutun kolumnach. Każdy element ma adres, metin, tarih i gorsel. Nie ma adaptera API, tokenu ani żądania do jakiejkolwiek sieci — to lista odnośników i wtyczka mówi to wprost, zamiast sugerować kanał na żywo.
Dymek podpowiedzi
metin to słowo w Twoim zdaniu, ipucu to wyjaśnienie, konum to strona, po której się otwiera. To prawdziwy przycisk, a dymek niesie role="tooltip": najechanie i fokus obsługiwane są w CSS, dotknięcie w skrypcie, a Escape zamyka. Dymek jest ukrywany przez visibility, a nie usuwany, więc relacja described-by zostaje w drzewie dostępności.
Animacja SVG
dosya to plik SVG, durgun nieruchoma klatka, alt tekst alternatywny, a genislik szerokość. Plik jest renderowany wewnątrz <img>, i to celowo: skrypt wewnątrz SVG nie sięgnie w ten sposób Twojej strony. <picture> podstawia nieruchomą klatkę, gdy odwiedzający poprosił o ograniczenie ruchu.
Alert, Animowany nagłówek, Oś czasu, Tabela, Obracany kafelek
Alertowi można dać przycisk zamknięcia (kapatilabilir) i po zamknięciu przenosi on fokus na następny element; jego typ i tytuł są edytowalne. Animowany nagłówek wybiera swój znacznik (baslik_etiketi, h1–h6, p, div lub span) i może wpisywać swoje słowa (etki) — pierwsze słowo jest zawsze drukowane, a oba efekty zatrzymują się przy ograniczonym ruchu. Oś czasu przyjmuje układ poziomy (yon), który na wąskim ekranie wraca do pionowego bez zmiany kolejności czytania. Komórki nagłówkowe tabeli niosą scope="col", a pusta komórka drukuje myślnik z etykietą dla czytnika ekranu. Obracany kafelek obraca się po dotknięciu, Enterze i spacji, a Escape obraca go z powrotem.
Przełącznik treści (Pro)
Pasek zakładek — zwykle miesięcznie i rocznie — nad Panelami przełącznika, które mieszczą dowolne bloki. Ustawienia: etiket (dostępna nazwa paska), rozet (odznaka, na przykład o oszczędności) i acik; każdy panel ma baslik.
Portfolio (Pro)
gonderi_turu, taksonomi, terimler, adet, sutun, suzgec (pokaż filtr) i arsiv_bag (odnośnik do archiwum). Karty są renderowane na serwerze, a filtr tylko ukrywa je i pokazuje w przeglądarce, więc żadne żądanie nie opuszcza strony. Nie ma okna modalnego ani stronicowania.
Lottie (Pro)
adres, alt, baslik, durgun (nieruchoma klatka), onay i onay_metni. LottieFiles jest usługą zewnętrzną, więc blok idzie tą samą ścieżką zgody, co mapa i wideo: pokazuje nieruchomy obraz, dopóki odwiedzający się nie zgodzi, a przy ograniczonym ruchu nigdy się nie odtwarza. Biblioteka odtwarzacza nadal nie jest dołączana.

Nic tutaj nie jest ukryte, gdy JavaScript się nie wczyta. Zakładki pokazują każdy panel, przełącznik i akordeon są natywnymi elementami details, slider się przewija, playlista jest listą odnośników, a strzałki są drukowane jako ukryte, dopóki skrypt nie może nimi sterować — pokazanie przycisku, który nic nie robi, to pokazanie zepsutego interfejsu. Ukryta treść to treść niedostępna. Przyciski i odnośniki akcji mają minimalny rozmiar celu 44 pikseli.

Style bloków

Osiem stylów jest rejestrowanych przez własne register_block_style WordPressa, więc pojawiają się w panelu Style, który edytor i tak pokazuje dla zaznaczonego bloku. Nie ma nowej kontrolki do nauczenia, a wybór jest zapisywany jako klasa is-style-… w Twoim znaczniku, a nie jako ustawienie w naszej tabeli.

Nakładka gradientowa
Kontener, Obraz, Kafelek z obrazem, Baner, Slider
Skala szarości, kolor po najechaniu
Obraz, Kafelek z obrazem, Członek zespołu, Pas logotypów, Galeria
Rozmycie do najechania
Obraz, Kafelek z obrazem, Baner
Maska okrągła / Maska zaokrąglona
Obraz, Kafelek z obrazem, Członek zespołu — a dla zaokrąglonej także Baner i Galeria
Uniesienie po najechaniu
Kontener, Kafelek z ikoną, Kafelek z obrazem, Tabela cennika, Członek zespołu, Opinia, Wezwanie do działania, Baner
Powiększenie obrazu po najechaniu
Obraz, Kafelek z obrazem, Baner, Galeria
Przechylenie po najechaniu
Kafelek z ikoną, Kafelek z obrazem, Baner, Kafelek liczbowy

Każda transformacja przy najechaniu jest wyłączana, gdy system odwiedzającego prosi o ograniczenie ruchu. Zastosowanie stylu wymaga, żeby klasę niósł wrapper bloku, dlatego warstwa renderująca zdejmuje teraz atrybut className rdzenia ze znacznika wewnętrznego i drukuje go na wrapperze; strony przekonwertowane przez MevvBridge nigdy tego atrybutu nie niosły, więc ich to nie dotyczy.

Blok newslettera

Pole adresu, opcjonalne pole imienia (ad_alani), pole wyboru zgody i przycisk wysyłki. Teksty są Twoje: baslik, metin, dugme_metni, onay_metni i basari_metni.

  • To zwykły POST podpisany HMAC-iem, a nie nonce. Nonce jest związany z sesją i z dwunastoma godzinami; za pełnostronicowym buforem wygasły nonce zabija formularz po cichu. Podpis jest ten sam, którego używa silnik formularzy.
  • Wypełniona pułapka jest połykana w ciszy. Pokazanie błędu nauczyłoby kolejnego bota omijać pułapkę.
  • Limit żądań obowiązuje na adres.
  • Reguła zgody jest czytana z własnej treści bloku, nigdy z przesłanego formularza — odczytanie jej z ukrytego pola oddałoby to ustawienie w ręce odwiedzającego.
  • Adresy są przechowywane razem z pozostałymi zgłoszeniami formularzy, pod kluczem bulten:. Nie ma naszej listy ani żądania do strony trzeciej.

Aby przekazać potwierdzony adres temu, czego już używasz, podepnij się pod akcję:

add_action( 'mevvblocks_newsletter_subscribe', function ( $eposta, $ad, $blok_kimligi ) {
    // $eposta       : potwierdzony adres
    // $ad           : imię albo pusty ciąg, gdy pole jest wyłączone
    // $blok_kimligi : z którego bloku newslettera przyszedł
}, 10, 3 );

Akcja jest wywoływana po tym, jak adres został zwalidowany i zapisany, więc błąd w Twojej obsłudze nie może zgubić zapisu.

Tekst dynamiczny i pola własne

Bloki Nagłówek, Tekst, Przycisk i Obraz mogą wziąć swoją wartość z wpisu, a nie z tego, co wpisałeś. Panel nazywa się Dynamika, a źródła to stała lista: tytuł wpisu, zajawka, autor, data, pierwsza kategoria, tagi, liczba komentarzy, tytuł archiwum, szukana fraza, nazwa i opis witryny, bieżący rok, cena WooCommerce, SKU i stan magazynowy — oraz pole własne po kluczu.

  • Przy aktywnym Advanced Custom Fields pole czytane jest przez get_field(), więc dostajesz wartość sformatowaną, a nie surową. Bez ACF następuje powrót do zwykłych metadanych wpisu i w żadnym z tych przypadków nic się nie psuje.
  • Klucze zaczynające się od podkreślenia są odrzucane. To wewnętrzne pola WordPressa; ich wydrukowanie ujawniłoby to, czego strona nigdy nie miała pokazywać.
  • Nie ma pola „wykonaj to wyrażenie”. Oddałoby ono wykonywanie kodu każdemu, kto może edytować stronę.

Kiedy edytujesz szablon karty pętli, nie ma kontekstu wpisu, więc dynamiczne powiązanie pokazuje swoją statyczną wartość zapasową zamiast prawdziwej. To szablon, nie strona.

Siatka treści i kreator pętli

Blok Siatka treści odpytuje wpisy, strony lub produkty i układa je. Stronicowanie to zwykłe odnośniki, więc działa także przy wyłączonym JavaScripcie.

  • Sortowanie to lista zamknięta — data, data modyfikacji, tytuł, kolejność w menu, losowo — ponieważ ta wartość trafia do bazy danych.
  • Nagłówki kart mieszczą się w zakresie od h2 do h6. h1 nie jest oferowany: siatka kart na stronie, która ma już h1, zaburzyłaby kolejność nagłówków.
  • Jeden odnośnik na kartę. Uczynienie odnośnikami obrazu, tytułu i napisu „czytaj dalej” sprawia, że czytnik ekranu ogłasza ten sam cel trzy razy.
  • Siatka buforuje znalezione identyfikatory wpisów, nigdy wyrenderowany kod HTML, a bufor unieważnia zapis dowolnego wpisu — dlatego sytuacja „opublikowałem wpis, a on się nie pokazuje” nie może się zdarzyć.

Kreator pętli pozwala samodzielnie zaprojektować kartę zamiast korzystać z wbudowanej. Tworzy się szablon typu Karta pętli, buduje go ze zwykłych bloków z dynamicznymi powiązaniami i wybiera w ustawieniach siatki.

Podczas edycji szablonu karty nie ma kontekstu wpisu, więc dynamiczne powiązania pokazują swoje statyczne wartości zastępcze. A jeżeli szablon jest pusty, usunięty, zostawiony jako wersja robocza albo odwołuje się sam do siebie, siatka wraca do wbudowanej karty, zamiast nie wypisywać nic. Zagnieżdżanie pętli ograniczone jest do dwóch poziomów.

Silnik formularzy

Szesnaście typów pól, z walidacją po stronie serwera. Formularz jest jedyną częścią strony, która naprawdę coś robi, więc działa bez języka JavaScript: zwykłe wysłanie metodą POST otrzymuje tę samą walidację i te same komunikaty co wysłanie skryptowe.

Typy pól
Tekst, E-mail, Telefon, Adres (URL), Liczba, Data, Godzina, Ukryte, Długi tekst, Lista rozwijana, Lista wielokrotnego wyboru, Wybór pojedynczy, Wiele pól wyboru, Pole wyboru, Tekst zgody (KVKK) i Nagłówek podrzędny. Pro dodaje pole przesyłania pliku.
Dokąd trafiają zgłoszenia
Zarówno do własnej tabeli, jak i na e-mail. Rekord zapisywany jest najpierw, a wiadomość wysyłana w drugiej kolejności, ponieważ dostarczenie poczty zawodzi znacznie częściej niż zapis do bazy danych.
Odczytywanie zgłoszeń
MevvBlocks → Zgłoszenia formularzy. Pro dodaje tam eksport do CSV.
E-mail powiadamiający
Nadawcą jest witryna, nigdy odwiedzający. Użycie adresu odwiedzającego jako nadawcy to najczęstszy pojedynczy powód, dla którego poczta z formularza nigdy nie dociera — odrzucają ją SPF i DMARC. Jego adres trafia zamiast tego do pola Reply-To.

Spamem zajmują się trzy warstwy i żadna CAPTCHA: podpis niezależny od sesji, minimalny czas wypełniania oraz pole honeypot. Zgłoszenie, które wypełnia honeypot, jest po cichu przyjmowane i odrzucane — pokazanie błędu powiedziałoby botowi, że został złapany, a przy kolejnej próbie pominąłby to pole.

Dlaczego podpis, a nie nonce z systemu WordPress? Nonce jest przywiązany do sesji i do dwunastogodzinnego okna. Na buforowanej witrynie ten sam kod HTML serwowany jest godzinami albo dniami, nonce w jego wnętrzu dawno wygasł, a formularz po cichu przestaje działać. To najczęstsza terenowa awaria wtyczek formularzy. Podpis stosowany tutaj jest ważny przez siedem dni i nie zależy od tego, kto przegląda stronę.

Adres IP zgłoszenia nigdy nie jest przechowywany w czytelnej postaci — zapisywany jest wyłącznie skrót, solony kluczem własnej witryny, dzięki czemu rekordów z dwóch różnych witryn nie da się ze sobą zestawić.

Przechowywanie zgłoszeń nie jest powiązane z licencją. Gdyby było, dzień wygaśnięcia płatności byłby dniem, w którym klient zaczyna tracić dane.

Szablony motywu

Siedem typów szablonów, budowanych w tym samym edytorze WordPressa, z którego już się korzysta — Nagłówek, Stopka, Pojedyncza treść, Archiwum, Wyniki wyszukiwania, Nie znaleziono (404) i Karta pętli. Drugi edytor byłby kolejną rzeczą, którą trzeba by utrzymywać w zgodzie z rdzeniem WordPressa.

Typ i warunki znajdują się w zwykłym pudełku na pasku bocznym, a nie w panelu React — klasyczne pudełko zapisuje się także przy wyłączonym języku JavaScript i nie psuje się, gdy zmienia się API edytora.

Warunki
Cała witryna, strona główna, typ wpisu, kategoria albo pojedynczy element treści. Pozostawienie pustych pól oznacza całą witrynę.
Gdy pasuje kilka
Wygrywa warunek najwęższy.
Warunki źle sformułowane
Odrzucane przy zapisie i przechowywane jako puste, zamiast być zachowane jako nieprawidłowy tekst, przez który szablon po cichu nigdy by się nie pojawił.

Szablony nagłówka i stopki umieszczane są wyłącznie w motywach Astra i GeneratePress. Jeżeli motyw nie ma przepisu, w ogóle nie są wypisywane i ekran o tym informuje — doczepienie nagłówka do motywu, którego nie potrafimy podnieść, oznacza gwarantowane dwa nagłówki. Szablony wpisu, archiwum, wyszukiwania i 404 działają w każdym motywie, ponieważ zastępują pętlę, a własny nagłówek i stopkę motywu zostawiają na miejscu.

Szablon Karty pętli nigdy sam się nigdzie nie umieszcza. Wybiera go blok siatki.

Biblioteka wzorców i ustawienia wstępne bloków

Siedemdziesiąt sześć gotowych wzorców: sześćdziesiąt cztery sekcje i dwanaście pełnych stron. Są rejestrowane jako zwykłe wzorce WordPressa, więc wstawiasz je tak, jak już umiesz — przycisk +, zakładka Wzorce, następnie kategoria MevvBlocks sections albo MevvBlocks pages. Sekcje obejmują rodziny hero, funkcji, opinii, FAQ, cennika, wezwania do działania, kontaktu, o nas, pasa nad stopką i statystyk; strony dodają trzy warianty strony głównej, stronę FAQ, stronę kampanii, stronę historii i stronę podziękowania.

Nie napisano do tego własnego okna modalnego. Okno wstawiania z rdzenia daje już za darmo podgląd, wyszukiwanie, nawigację klawiaturą i tłumaczenie, a to, co wstawia, jest zwykłym znacznikiem bloków — nie ma się w czym zamknąć.

Dziewięć z nich wymaga WooCommerce: osiem sekcji produktu i kategorii oraz jedna strona docelowa sklepu. Znajdują się we własnym pliku i są rejestrowane tylko wtedy, gdy WooCommerce jest aktywne, więc witrynie bez sklepu nigdy nie zostanie zaproponowany wzorzec wstawiający blok, którego nie potrafi narysować. Produkty w nich pochodzą z zapytania — nowe, wyróżnione, w promocji, najlepiej sprzedające się — a nie z identyfikatora kategorii wpisanego we wzorzec, ponieważ ten sam identyfikator trafia w innym sklepie na pustą albo po prostu niewłaściwą kategorię.

Wzorce dostarczane są bez obrazów. Zaciąganie obrazów skądinąd to kwestia praw autorskich, kwestia prywatności i uzależnienie wyglądu strony od tego, czy cudzy serwer stoi. Bloki obrazów są na swoim miejscu, z wypełnionym tekstem alternatywnym; obraz wybiera sam użytkownik.

Ustawienia wstępne bloków zapisują ustawienia wyglądu bloku pod nazwą i stosują je do innego bloku tego samego typu. Treść celowo nie jest zapisywana — tekst, odnośniki, obrazy i elementy list są usuwane, więc zastosowanie ustawienia wstępnego nigdy nie nadpisuje tego, co zostało napisane.

Wzorce nie są w ogóle rejestrowane na froncie witryny. Generowanie ich znacznika przy każdej odsłonie strony zmierzono na 109 KB i 3,59 ms — zapłacone za nic, skoro nikt nie wstawia wzorca w trakcie czytania.

Paleta witryny

Jeden ekran dla kolorów i typografii, dostępny zarówno z menu MevvBlocks, jak i z sekcji Wygląd, bo tam ludzie go szukają. Każda pozycja pokazuje własną nazwę zmiennej, a bloki odwołują się do tych nazw, a nie do dosłownych wartości.

To właśnie pozwala stronie zbudowanej przed przełączeniem przejąć nową paletę zamiast stracić swoje odwołania — nazwy zmiennych pozostają tymi samymi, których strony już używają.

Nie ma usuwania. Zestaw koloru albo typografii można zostawić pusty, ale jego usunięcie sprawiłoby, że każdy blok, który się do niego odwoływał, wskazywałby w pustkę. Opróżnienie jest odwracalne; usunięcie odwołania nie jest.

Audyt dostępności

MevvBlocks → Dostępność skanuje opublikowane strony, wpisy i szablony oraz raportuje, co każdy blok pominął: obrazek bez tekstu alternatywnego, pusty nagłówek, przycisk bez nazwy lub bez celu, zaburzoną kolejność nagłówków, zbyt niski kontrast.

Ten sam audyt dostępny jest jako panel na pasku bocznym jeszcze w trakcie edycji, czyli tam, gdzie naprawa znaleziska kosztuje najmniej.

To celowo nie jest nakładka. Warstwy doczepiające do strony „menu dostępności” niczego nie naprawiają: obraz bez tekstu alternatywnego nadal go nie ma, a tekst o niskim kontraście nadal jest nieczytelny. Niesienie twierdzenia „ta witryna jest dostępna” bez pokrycia w prawdzie to gorsza pozycja niż niegłoszenie żadnego twierdzenia — witryny korzystające z nakładek były pozywane właśnie o to. To narzędzie mierzy i informuje; naprawa należy do właściciela witryny.

Kontrast raportowany jest tylko wtedy, gdy oba kolory są rzeczywiście znane. Zgadywanie odziedziczonego koloru dawałoby ostrzeżenia, z którymi nie da się nic zrobić.

Szybkość — buforowanie elementów i obrazy

Dwie osobne rzeczy, obie w edycji darmowej.

Buforowanie elementów. Wynik renderowania bloku jest przechowywany, zamiast być odbudowywany przy każdym żądaniu. Zmierzone: czas renderowania bloku niższy o 33–72%. Korzysta z trwałej pamięci podręcznej obiektów (Redis, Memcached), gdy taka istnieje, a w przeciwnym razie z transientów.

Blok, którego wynik zależy od odwiedzającego, zapytania albo chwili, nigdy nie jest przechowywany: formularze, logowanie, rejestracja, mini koszyk, siatka produktów, wyszukiwanie, koszyk, strona zamówienia, moje konto, shortcode. Shortcode jest na tej liście, ponieważ nie wiemy, co jest w jego wnętrzu — raz zamroziliśmy token wtyczki WPForms na działającej witrynie i od tamtej pory reguła jest egzekwowana w kodzie źródłowym.

Optymalizacja obrazów. Obok oryginału każdego wgranego obrazu zapisywana jest kopia WebP (opcjonalnie AVIF); oryginał pozostaje nietknięty. Zmierzone: 39–78% mniej. Plik, który się nie zmniejsza, nie jest zachowywany — małe płaskie pliki PNG zwykle rosną w formacie WebP.

Obrazy serwowane są wewnątrz elementu <picture>: adres każdego formatu jest w kodzie HTML, a wyboru dokonuje przeglądarka. Decydowania po stronie serwera na podstawie nagłówka Accept celowo nie użyto — gdy ten sam adres różni się w zależności od odwiedzającego, każda pamięć podręczna na drodze może podać niewłaściwy plik niewłaściwej osobie.

Jeżeli inna wtyczka naprawdę wykonuje to zadanie (LiteSpeed, ShortPixel, Imagify, Smush, EWWW, Optimole, Converter for Media), wtyczka MevvBlocks sama się wycofuje i mówi dlaczego. Pytanie nie brzmi „czy jest zainstalowana”, lecz „czy faktycznie może działać”: LiteSpeed z włączoną optymalizacją obrazów, ale bez klucza chmurowego, nie robi zupełnie nic.

Core Web Vitals — mierzone na własnych odwiedzających

Core Web Vitals to z definicji dane terenowe: mierzone w przeglądarkach prawdziwych odwiedzających, raportowane jako 75. percentyl z okna 28 dni. Pomiar w narzędziu Lighthouse to co innego — jedna maszyna, jedna sieć, jeden moment. Świadomość, co jest czym, rozstrzyga zamieszanie w rodzaju „PageSpeed pokazuje 98, a Search Console świeci na czerwono”.

Ekran Web Vitals pokazuje trzy liczby dla każdej klasy urządzeń:

LCP
Ile czasu zajmuje pojawienie się głównej treści. Dobry wynik to 2,5 sekundy lub mniej.
CLS
Jak bardzo strona się przesuwa, zanim się ustabilizuje. Dobry wynik to 0,1 lub mniej.
INP
Ile czasu zajmuje stronie odpowiedź na stuknięcie lub kliknięcie. Dobry wynik to 200 ms lub mniej.

Skrypt mierzący ma około kilobajta i nie wczytuje żadnej biblioteki — pracę wykonuje własny PerformanceObserver przeglądarki. Próbkowanie domyślnie obejmuje 10% wizyt i decyduje o nim przeglądarka, a nie serwer: gdyby decydował serwer, ten sam adres URL dawałby dwa różne dokumenty HTML, a pamięć podręczna całych stron serwowałaby wszystkim ten, który zobaczyła pierwszy.

Nie są zbierane żadne dane osobowe: bez adresu IP, bez pliku cookie, bez identyfikatora. Trzy wartości, klasa urządzenia i ścieżka strony, przechowywane na własnym serwerze jako liczniki w przedziałach. Nic nigdzie nie jest wysyłane.

Poniżej stu próbek ekran nie pokazuje żadnej liczby — mówi zamiast tego, ile próbek ma. Percentyl z kilkunastu pomiarów to szum, a błędna liczba jest gorsza niż jej brak, bo ktoś na jej podstawie podejmie działanie. Percentyl odczytywany jest z histogramu, więc jest przybliżony do szerokości przedziału, i ekran o tym informuje.

Transformacje i maski

Każdy blok można przesunąć, przeskalować, obrócić (wokół osi Z oraz w 3D wokół X/Y), pochylić i odbić — każdorazowo z osobnymi wartościami dla komputera, tabletu i telefonu. Można też ustawić osobną transformację przy najechaniu kursorem i czas trwania przejścia.

Maską może być koło, trójkąt, sześciokąt, plama, kwiat, kształt odręczny albo własny obraz, z kontrolkami rozmiaru, położenia i powtarzania.

Kształty są osadzone w CSS, a nie dostarczane jako osobne pliki SVG. Błędna ścieżka pliku sprawia, że maska po cichu znika i nikt nie widzi błędu 404; za siecią CDN adres folderu wtyczki może się dodatkowo zmienić.

Własny kod dla całej witryny

Kod HTML, CSS i JavaScript można umieścić w sekcji head, na początku sekcji body albo na jej końcu: tagi weryfikacyjne, fragmenty pomiarowe, drobne poprawki stylu. Położenie, priorytet i warunek sesji są konfigurowalne.

Nie uruchamia kodu PHP. Umieszczenie wykonawcy PHP wewnątrz kreatora stron zamieniłoby uprawnienie projektanta w uprawnienie do uruchamiania kodu na serwerze.

Wymagane uprawnienie to unfiltered_html: kto nie może umieścić surowego skryptu we wpisie, ten nie umieści go też w całej witrynie. Przy zainstalowanej wtyczce MevvLegal skrypty śledzące umieszczone tutaj również są wstrzymywane do czasu wyrażenia zgody na pliki cookie.

Bloki WooCommerce

Dwadzieścia trzy bloki: tytuł produktu, obrazy, cena, dodaj do koszyka, ocena, stan magazynowy, meta, krótki opis, opis, karty danych, dodatkowe informacje, produkty powiązane, sprzedaż dodatkowa, sprzedaż krzyżowa, koszyk, zamówienie, moje konto, śledzenie zamówienia, sortowanie i liczba wyników — a do tego produkty, kategorie produktów i mini koszyk.

Żaden z nich nie przerysowuje WooCommerce. Wszystkie wywołują jego własne funkcje szablonów i shortcode’y. Motyw zmienia te szablony, a wtyczki podpinają się do nich — wysyłka, raty, powiadomienia o stanie magazynowym, tabele rozmiarów. Rysowanie własnego znacznika po cichu porzuciłoby to wszystko.

Koszyk, strona zamówienia, moje konto i śledzenie zamówienia są właściwe dla konkretnego odwiedzającego: buforowanie całych stron jest wyłączane, a bloki nigdy nie trafiają do bufora elementów. Jeżeli WooCommerce nie jest aktywny, bloki te nie są rejestrowane ani na serwerze, ani w edytorze.

Notatki w edytorze

Do każdego bloku można przypiąć notatkę: kto ją napisał, kiedy i czy sprawa jest załatwiona.

Notatki NIGDY nie są wypisywane na stronie. W tym pliku nie ma ani jednego punktu zaczepienia na froncie witryny, a pilnuje tego test. Notatki to rozmowa wewnętrzna; sytuacja, w której zobaczyłby je odwiedzający, byłaby gorsza niż zepsuty układ.

Notatka jest powiązana z tożsamością bloku. Zduplikowanie bloku nadaje kopii NOWĄ tożsamość, więc nie dziedziczy ona notatki — a przy okazji zyskuje własny zakres CSS.

Notatki żyją we własnych danych wpisu: usunięcie wpisu zabiera je ze sobą, nie pozostawiając osieroconych wierszy.

AI w edytorze — z własnym kluczem

Pisanie, przeredagowanie, skracanie, generowanie tekstu alternatywnego obrazów i tłumaczenie. Obsługiwane są Anthropic i OpenAI.

Klucz API wprowadza się WŁASNY, a żądanie idzie z witryny BEZPOŚREDNIO do dostawcy. Tekst nigdy do nas nie trafia; limit i rachunek zostają po stronie użytkownika. Nie zbudowaliśmy własnej usługi chmurowej: tekst przechodziłby wtedy przez nasze serwery, a odpowiedzialność za dane stałaby się nasza.

Klucz nigdy nie trafia do przeglądarki — żądanie wykonywane jest z serwera. Nie zwraca go też żaden punkt końcowy; nawet formularz ustawień nie wypisuje wartości z powrotem.

NIE szyfrujemy tego klucza i mówimy to wprost: w systemie WordPress klucz szyfrujący musi leżeć na tym samym serwerze, więc napastnik z dostępem do bazy danych dostaje oba. Nazwanie go „zaszyfrowanym” obiecywałoby ochronę, która nie istnieje.

Wynik nie jest zapisywany wprost do bloku; przychodzi jako propozycja, którą trzeba zastosować. To nasza prawdziwa obrona przed tym, by zdanie ukryte w treści zostało odczytane jako polecenie — zatwierdza człowiek.

Odczyt pliku theme.json motywu

Motyw blokowy deklaruje już swoją paletę i typografię w pliku theme.json. MevvBlocks może odczytać ten plik i użyć go do wypełnienia pustych miejsc we własnej palecie witryny, dzięki czemu kolory wybierane w bloku są kolorami, których motyw już używa, zamiast drugiego, konkurencyjnego zestawu.

Most działa tylko w jedną stronę i tak pozostaje. Nic nigdy nie jest zapisywane z powrotem do theme.json. Wtyczka, która edytuje własny plik motywu, zostawia cię z plikiem, który aktualizacja motywu nadpisze — bez sposobu, by stwierdzić, który z tych dwóch był poprawny. Wypełnia też tylko te miejsca, które zostawiłeś puste: kolor ustawiony ręcznie nigdy nie jest zastępowany.

Jest wyłączony, dopóki go nie włączysz, ponieważ witryna, która już ma paletę, nie chce, by po cichu przekierowano ją na paletę motywu.

Mega panel

Podmenu może otwierać się jako panel na pełną szerokość, do czterech kolumn, zamiast wąskiej listy rozwijanej. To nie nowy blok — to ustawienie bloku nawigacji, którego już używasz, więc menu zachowuje swój znacznik, zachowanie klawiaturowe i układ mobilny.

Włącz panel dla pozycji menu bez podmenu, a kontrola dostępności to zgłosi. Pusty panel to nie drobny problem kosmetyczny: to element sterujący, który zapowiada się czytnikowi ekranu, a potem nie zawiera niczego.

Pierwsza wersja robocza strony, ze zdania

Opisz stronę, jakiej chcesz, a model wybiera sekcje z własnej biblioteki wzorców wtyczki. Nigdy nie zapisuje znaczników: zwraca listę kluczy sekcji, a MevvBlocks sam renderuje te sekcje. To, co ląduje na stronie, to więc zwykłe bloki, które możesz edytować, a nie wygenerowany HTML, który trzeba porządkować.

  • Klucz sekcji zmyślony przez model nie istnieje w bibliotece, więc jest pomijany — a ekran informuje cię, że został pominięty, zamiast po cichu wygenerować krótszą stronę.
  • Strona jest zawsze tworzona jako wersja robocza. Nie ma żadnej ścieżki kodu, która ją publikuje.
  • Używa tego samego klucza, który wpisałeś dla narzędzi AI edytora: twojego własnego klucza Anthropic albo OpenAI, przechowywanego na twojej witrynie, przy czym żądanie idzie bezpośrednio z twojego serwera do dostawcy.

Free i Pro

Wersja darmowa to cały produkt: 107 ze 110 bloków, osiem stylów bloków, szablony motywu, siatka i kreator pętli, silnik formularzy z magazynem zgłoszeń, formularz newslettera, tekst dynamiczny łącznie z polami ACF, menu, wyszukiwarka, wyskakujące okna, biblioteka wzorców, presety bloków, paleta globalna, optymalizacja obrazów, buforowanie bloków, własny kod dla całej witryny, notatki redakcyjne, ekran Core Web Vitals i audyt dostępności.

Wersja Pro dodaje możliwości edycyjne, a nie wynik na stronie:

  • Punkty przełamania — zakładki komputer / tablet / telefon, z minimalną wysokością, szerokością treści, szerokością i czterema wartościami wewnętrznego marginesu dla każdego punktu przełamania.
  • Własny CSS dla każdego bloku, gdzie token selector oznacza sam ten blok.
  • Dodatki do formularzy — pola warunkowe, automatyczna odpowiedź do nadawcy, webhook oraz pole wysyłania pliku.
  • Eksport CSV zgłoszeń z formularzy.
  • Trzy bloki — przełącznik treści z jego panelami, portfolio z filtrem taksonomii oraz osadzenie Lottie. Ich renderowanie też nigdy nie sprawdza licencji: strona, która już je niesie, dalej je drukuje.

Panele punktów przełamania i własnego CSS pojawiają się dziś przy blokach podstawowych — Kontener, Tytuł, Tekst, Przycisk, Separator, Obrazek, Opinia, Ikona, Ramka z ikoną, Lista z ikonami, Shortcode, Formularz, Produkty i Kategorie produktów. Kilka ustawień dla poszczególnych punktów przełamania jest darmowych wszędzie tam, gdzie istnieją: liczba kolumn siatki na tablecie i telefonie, próg menu hamburgerowego, pozycja ramki z obrazkiem na telefonie oraz wybór urządzenia dla pozycji przyklejonej.

Gdy licencja wygaśnie albo jej nie ma:

  • Witryna wygląda dokładnie tak samo. Każda zapisana wartość dla tabletu i telefonu jest nadal wypisywana, podobnie jak każda reguła własnego CSS dla bloku. To nie jest obietnica, lecz reguła architektoniczna: żaden plik na ścieżce renderowania nie pyta o licencję, a test sprawdza to przy każdym wydaniu.
  • Formularze nadal się wysyłają, nadal zapisują i nadal wysyłają pocztę.
  • Istniejące wyskakujące okna nadal się pokazują.
  • Traci się panele wersji Pro w edytorze — i tylko je.

Jeżeli nasze serwery są nieosiągalne, aktywna licencja działa jeszcze przez siedem dni. Instalacja, która nigdy nie zweryfikowała się pomyślnie, nie dostaje żadnej karencji: zablokowanie naszego adresu nie jest sposobem na zdobycie wersji Pro.

Gdy coś nie działa

„Sesja formularza wygasła.”
Zbuforowana kopia tej strony jest starsza niż siedem dni albo klucze bezpieczeństwa witryny zostały wymienione. Należy wyczyścić pamięć podręczną stron.
Formularz nie wysyła poczty
Najpierw należy sprawdzić listę zgłoszeń — rekord zapisywany jest przed wysłaniem poczty, więc jeżeli tam jest, formularz zadziałał, a dostarczenie nie. Potem trzeba sprawdzić adres odbiorcy i konfigurację poczty witryny.
Strona wygląda dobrze w edytorze, a źle na froncie witryny
Podgląd w edytorze jest z założenia przybliżony; patrz wyżej. Prawdą jest front witryny. Jeżeli blok niesie wartości dla tabletu lub telefonu, edytor wypisuje o tym komunikat.
Blok twierdzi, że jest nieprawidłowy, gdy próbuję go edytować
Historycznie zdarzało się to blokom zarejestrowanym na serwerze, ale brakującym w skrypcie edytora — wypisywały się bez zarzutu i zawodziły dopiero po otwarciu do edycji. Obecnie strzeże przed tym test; jeżeli problem nadal występuje, prosimy zgłosić nazwę bloku.
Odliczanie pokazuje zły czas
Znacznik niesie bezwzględny moment docelowy, a nigdy „pozostało X sekund”, więc zbuforowana strona nie może go zamrozić. Blok koryguje się względem zegara serwera; jeżeli to żądanie zostanie zablokowane, wraca do zegara samego odwiedzającego, zamiast zawieść.
Szablon nagłówka albo stopki się nie pokazuje
Motyw nie ma przepisu. Podnieść da się tylko motywy Astra i GeneratePress; ekran o tym ostrzega. Pozostałe typy szablonów działają w każdym motywie.
Pojawiły się dwa nagłówki
Nagłówek wytwarzają jednocześnie wtyczki MevvBlocks i MevvBridge. Miejsce zajmuje najpierw MevvBlocks, i to celowo — nagłówek należy zostawić jednej z nich.
Kontenery są szersze albo węższe, niż ustawiono
Reguła motywu wygrywa na specyficzności. Szczególnie motyw Astra mocno stylizuje swoich potomków. Dla zmierzonych przypadków naprawiono to przez podniesienie specyficzności, a nie przez użycie !important; przy nowym przypadku prosimy podać, o który motyw chodzi.
Opublikowany wpis nie pojawia się w siatce
Powinien się pojawić. Siatka buforuje wyłącznie identyfikatory wpisów, a zapis dowolnego wpisu unieważnia bufor. Jeżeli problem się utrzymuje, należy sprawdzić, czy typ wpisu i sortowanie są takie, jakich się spodziewamy.

Aktualizacje

Aktualizacje przychodzą przez sam WordPress. Wtyczka pyta nasz sklep, czy istnieje nowsza wersja, i przekazuje odpowiedź własnemu przepływowi aktualizacji WordPressa, więc nowe wydanie pojawia się na ekranie wtyczek ze zwykłym przyciskiem Aktualizuj, zamiast czekać, aż ktoś ręcznie pobierze zip. W darmowej edycji to żądanie niesie wyłącznie nazwę pakietu i zainstalowaną wersję — bez adresu witryny, bez adresu e-mail, bez klucza licencji i bez spisu wtyczek. Ponieważ nic w nim cię nie identyfikuje, zaufanie opiera się na podpisie: odpowiedź jest podpisana naszym kluczem Ed25519, a odpowiedź niepodpisana, źle podpisana, odtworzona ze starego znacznika czasu albo kierująca pobranie na host inny niż nasz zostaje odrzucona bez dotykania witryny.

Ograniczenia

  • Podgląd w edytorze jest dokładny dla układu, ale nie dla wszystkiego. Płótno drukuje ten sam CSS co strona publiczna, więc odstępy, tło, obramowania, typografia, transformacje i pozycja się zgadzają. Nadal różni się każda reguła napisana pod znaczniki wewnątrz bloku, ponieważ na płótnie blok rysuje własne elementy edycyjne.
  • Szablony nagłówka i stopki działają wyłącznie w motywach Astra i GeneratePress. Każdy inny motyw nie dostaje nic, za to dostaje ostrzeżenie — milczenie oznaczałoby dwa nagłówki.
  • Mapa to osadzenie OpenStreetMap. Jeden znacznik, bez własnej grafiki znacznika, bez stylizacji mapy, bez wyznaczania trasy. Bez klucza API, bez konta rozliczeniowego i bez klucza leżącego w kodzie źródłowym strony.
  • Portfolio nie ma okna modalnego ani stronicowania. Karty, filtr i odnośnik do archiwum — to cały blok.
  • Kanał społecznościowy nie ma adaptera API. To lista odnośników wybranych ręcznie; nic nie jest pobierane z żadnej sieci i żaden token nie jest przechowywany.
  • Nie ma animacji powiązanych z przewijaniem ani reguły, która powstrzymałaby dwa efekty przed zderzeniem. Efekty wejścia, paralaksy i najechania istnieją i wszystkie milkną przy ograniczonym ruchu.
  • Wykres kołowy nie animuje się i nie jest interaktywny: wartości są drukowane obok niego jako lista, a nie pokazywane po najechaniu.
  • Bez nakładki dostępności. Wyłącznie pomiar i raportowanie.
  • Bez CAPTCHA.
  • Bez wyszukiwania na żywo. Żądanie przy każdym naciśnięciu klawisza to zależność i powierzchnia dla limitów zapytań.
  • Odliczanie korzysta ze strefy czasowej witryny, a nie odwiedzającego. Kampania kończy się w jednym momencie na całym świecie.
  • Menu oferuje dwa breakpointy, a nie swobodną wartość w pikselach i nie ma trybu rozwijanego ani wysuwanego — od panelu wysuwanego z zarządzaniem fokusem jest blok wyskakującego okna.
  • Karty siatki nie mogą być nagłówkiem h1, a zagnieżdżanie pętli kończy się na dwóch poziomach.
  • Zestaw ikon to 94 konturowe ikony, wszystkie rysowane w jednym polu 24 pikseli. Nie ma fontu ikon ani sposobu na dodanie własnej do selektora; własny plik SVG wchodzi przez blok Obraz albo Animacja SVG.
  • Treść dynamiczna pochodzi z zamkniętej listy źródeł. Nie ma pola „wykonaj to wyrażenie”: oddałoby ono wykonywanie kodu każdemu, kto może edytować stronę.
  • Globalnych zestawów koloru i typografii nie da się usunąć, można je tylko opróżnić.
  • Karty produktów rysuje WooCommerce, a nie my, więc motyw i wszelkie punkty zaczepienia innych firm nadal działają.
  • Interfejs dostarczany jest w jedenastu językach. Turecki, angielski, hiszpański, niemiecki, francuski, portugalski, włoski, niderlandzki, japoński, rosyjski i polski, a do tego warianty krajowe, takie jak es_MX i pt_PT. Każda inna lokalizacja wraca do angielskiego.
  • Okno Web Vitals resetuje się co 28 dni; nie przesuwa się. Okno przesuwne wymagałoby przedziałów dziennych i dwudziestoośmiokrotnie większej przestrzeni. Ekran pokazuje, kiedy zaczęło się bieżące okno.
  • Odinstalowanie nie usuwa tabeli zgłoszeń ani ustawień. Treść bloków i tak pozostaje czytelna — to standardowy znacznik w polu post_content.

Nigdzie nie jest wczytywana żadna zewnętrzna biblioteka JavaScript ani CSS. Ani do slidera, ani do akordeonu, ani do ruchu, ani do mapy. Każda z nich kosztowałaby od czterdziestu do stu kilobajtów na każdej stronie, która by jej używała.